[英]Using AJAX to call a php function keeps failing
即時通訊在嘗試獲取ajax調用以觸發php函數然后成功返回時遇到問題。 據我所見,我的語法是正確的。
但是我回來的一切都失敗了! 有任何想法嗎?
編輯
我已經更改了不使用數據就發送的AJAX請求,只是為了排除出現問題,並且已經實現了以下人建議的一些內容,但無濟於事,這就是我現在的2個文件:
ship.js:
function set_ship()
{
//var datastring = {'ship':'true'};
$.ajax({
type:'POST',
url:'soap/classes/class.ship.php',
success: function(success){
alert('success');
},
error: function(fail){
console.log(fail);
}
});
}
還有我的PHP class.ship.php:
<?php
var_dump("hello");
header('Content-type: application/json');
echo json_encode(array("result"=>"true"));
從我的PHP腳本上的var_dump中,我可以看到class.ship.php甚至由於某種原因沒有被調用。
謝謝
請嘗試這個
json_encode(array("result"=>"true"));
因為
json_encode(true) // will return just "true" which is not a valid json
還可以嘗試序列化dataString,方法是
data: datastring.serialize();
您需要將內容標頭設置為json header('Content-type: application/json');
並確保您請求返回僅json coz ajax僅等待“ JSON”,並且它將引發解析錯誤
if(isset($_POST['ship']) && $_POST['ship'] == "true"){
$result = "result";
header('Content-type: application/json');
echo json_encode(true);
}
我建議您檢查服務器實際返回的內容。
錯誤回調收到一個表示xhr對象的參數,因此您可以通過放置斷點或使用控制台日志直接檢查該參數,如下所示
error: function(xhr) {
console.log(xhr);
}
同樣,成功回調接收三個參數:狀態,返回的數據和XMLHTTPRequest對象,因此您可以通過相同的方式檢查它們:
success: function(status, data, xhr) {
console.log(status, data, xhr);
}
您應該在xhr對象中查找響應狀態代碼和響應文本,以了解問題所在。 如果看到200 OK響應狀態,則從服務器返回的數據可能未正確解釋為JSON數據,因此您應嘗試將響應頭服務器端設置為application / json。
如果在響應中附加或添加了其他內容,也可能會發生錯誤。 當返回之前代碼中出現警告並且您將錯誤報告設置為ON時,尤其會發生這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.