如何在ajax调用

时间:2017-03-08 10:43:31

标签: php json ajax get

我有一个JavaScript页面,可以调用PHP页面。

$.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而不是整页。我希望我已经解释了我的问题,如果不清楚我将尝试解释它更多。

有什么建议吗?

4 个答案:

答案 0 :(得分:0)

echo $apiResult;
exit();

您需要停止标头缓冲

答案 1 :(得分:0)

您需要在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;

答案 2 :(得分:0)

从你的问题我发现你没有在json中编码你的回声部分 试着

echo json_encode($apiResult);

希望它能够正常工作

答案 3 :(得分:-1)

你需要有一个没有脚本标签的其他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 '';