2017-03-08 66 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); 

希望它會工作

相關問題