簡體   English   中英

使用AJAX調用php函數總是失敗

[英]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();
  1. 小寫JSON_ENCODE
  2. 成功:功能( 成功 ),錯誤:功能( 失敗
  3. 檢查螢火蟲的網絡標簽中返回了什么。

您需要將內容標頭設置為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM