【问题标题】:How to echo only the result and not the whole page in ajax call如何在ajax调用中只回显结果而不是整个页面
【发布时间】:2017-03-08 10:43:30
【问题描述】:

我有一个调用 PHP 页面的 JavaScript 页面。

$.getJSON('result.php', function(json){
    var data = json.result[0];
}).complete(function(){        
// do this
}).error(function(jqXHR, textStatus, errorThrown) {        
// do this
});

这是 result.php 的样子

require_once('config.php');

header("Content-type: application/json; charset=UTF8");
$apiMgr = new API(0, 0, array("result"));
$apiResult =  $apiMgr->callAPI('GET', 'result', isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'] == '/historical' ? '?option=follow' : null, null);
echo $apiResult;

在配置页面中,我添加了一些 javascript 脚本,例如 follwoing

<script>
  // script
  // script
  // script
  // script
</script>

问题是 $.getJSON() 给了我语法错误,因为来自 result.php 的整个响应还包括不应该存在的脚本部分。

我只想回显或返回 $apiResult 而不是整个页面。如果不清楚,我希望我已经解释了我的问题,我会尝试更多地解释它。

有什么建议吗?

【问题讨论】:

    标签: php json ajax get


    【解决方案1】:
    echo $apiResult;
    exit();
    

    你需要停止头部缓冲

    【讨论】:

    • 我试过但没用。我只是想知道为什么?我做错了什么?
    【解决方案2】:

    您需要在 echo 语句之前提及标题。并且,打印出来后终止脚本执行。

    $apiMgr = new API(0, 0, array("result"));
    $apiResult =  $apiMgr->callAPI('GET', 'result', isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'] == '/historical' ? '?option=follow' : null, null);
    
    header("Content-type: application/json; charset=UTF8");
    echo $apiResult;
    exit;
    

    【讨论】:

      【解决方案3】:

      从你的问题我发现你没有在 json 中编码你的 echo 部分 试试看

      echo json_encode($apiResult);
      

      希望它会起作用

      【讨论】:

        【解决方案4】:

        你需要有另一个没有脚本标签的config.php。或者在您的 config.php 中添加一个条件并测试我们是否需要显示您的脚本标签。

        $.get('result.php', function(data){ var data = json.result[0]; }).complete(function(){ // do this }).error(function(jqXHR, textStatus, errorThrown) { // do this }); function callbackfunction(data){ //do something } //in your result.php require_once('config.php'); $apiMgr = new API(0, 0, array("result")); $apiResult = $apiMgr->callAPI('GET', 'result', isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'] == '/historical' ? '?option=follow' : null, null); echo ''; echo 'callbackfunction('.$apiResult.')'; echo '';

        【讨论】:

        • 我需要在我的配置文件中有这些脚本标签。这是重要的脚本,我不能删除它。在输出中以某种方式排除它会很棒。
        • 问题是当你用$.getJSON发送请求时,这个方法只需要得到一个json格式的文本。使用您的脚本标签是不可能的,因为您的标头已经发送。
        • 你可以这样做:code $.get('result.php', function(data){ var data = json.result[0];}).complete(function( ){ }).error(function(jqXHR, textStatus, errorThrown) { }); function callbackfunction(data){ //做一些事情 } //在你的 result.php 中 require_once('config.php');$apiMgr = new API(0, 0, array("result"));$apiResult = $apiMgr ->callAPI('GET', 'result', isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'] == '/historical' ? '?option=follow' : null, null);echo '';code
        猜你喜欢
        • 1970-01-01
        • 2013-07-19
        • 2015-03-25
        • 2015-09-21
        • 1970-01-01
        • 1970-01-01
        • 2021-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多