2017-03-08 65 views
0

我有一个JavaScript页面调用PHP页面。如何只回应结果,而不是在Ajax调用的整个页面

$.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不是整个页面。我希望如果不清楚,我会解释我的问题,我会尽力解释它。

有什么建议吗?

回答

0
echo $apiResult; 
exit(); 

你需要停止头部缓冲

+0

我尝试过,但事实并非如此工作。我只是想知道为什么?我究竟做错了什么? – Shaonline

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; 
+0

我试过了,但仍然不起作用:( – Shaonline

-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 ''; 

+0

我需要在我的配置文件中包含这些脚本标记,这是很重要的脚本,我不能将其删除,在输出中以某种方式排除这种情况会很好。 – Shaonline

+0

问题是当你用$ .getJSON发送一个请求时,这个方法只需要得到一个json格式的文本。你的脚本标签是不可能工作的,因为你的头文件已经发送。 –

+0

你可以这样做: '代码'$ .get('result.php',function(data){var_data = json.result [0];})。complete(function(){ })。error(function(jqXHR,textStatus,errorThrown ){ }); function callbackfunction(data){ \t //做某事(','); $ apiMgr =新的API(0,0,数组(“结果”)); $ apiResult = $ apiMgr-> callAPI('GET' ,'result',isset($ _ SERVER ['PATH_INFO'])&& $ _SERVER ['PATH_INFO'] =='/ historical'? ';'选项=后续':null,null); echo'';'code' –

0

从你的问题我搞清楚,你没有编码JSON 您的回音部分尝试

echo json_encode($apiResult); 

希望它会工作

相关问题