2013-11-04 76 views
1

即時通訊問題嘗試獲取ajax調用來觸發一個PHP函數,然後成功返回。據我所見,我的語法是正確的。使用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甚至沒有被稱爲某種原因。

感謝

+0

如果使用Chrome,您可以檢查檢查器中的網絡選項卡。您可能會從腳本中看到一個500。點擊它可能會給你更多的信息,這取決於你的錯誤報告。 – diggersworld

+0

不是你的問題的答案,但你在你的代碼示例中匹配一個帶有字符串的布爾值,PHP吞下它但看起來很傻。 – pbond

+0

我運行了你的代碼,它爲我工作。 class.ship.php中除了粘貼的代碼之外還有其他什麼東西可以混淆響應嗎? – Dan

回答

0
  1. 小寫JSON_ENCODE
  2. 成功:函數( 成功 ),錯誤:函數( 失敗
  3. 檢查是什麼在Firebug的網絡選項卡返回。
0

您需要設置內容頭JSON header('Content-type: application/json');並確保您請求僅返回JSON堂妹AJAX是隻爲「JSON」等待,它會引發解析錯誤

if(isset($_POST['ship']) && $_POST['ship'] == "true"){ 
    $result = "result"; 
    header('Content-type: application/json'); 
    echo json_encode(true); 
} 
2

請試試這個

json_encode(array("result"=>"true")); 

因爲

json_encode(true) // will return just "true" which is not a valid json 

也嘗試序列化dataString,通過做

data: datastring.serialize(); 
+0

我已經嘗試過這些,但仍然沒有運氣仍然返回錯誤:/ –

+0

您是否嘗試從瀏覽器訪問soap/classes/class.ship.php?你會得到所有有效的輸出嗎? – allupaku

+0

另外我相信你已經嘗試過他完整的網址,而不是相對路徑,因爲相對路徑可能因你所在的頁面而異。 也嘗試使用此簽名的錯誤方法, 錯誤:函數(jqXHR jqXHR,字符串textStatus,字符串errorThrown){ console.log(testStatus); } – allupaku

0

我建議你檢查它實際上是由服務器返回。

錯誤回調接收代表XHR對象,所以可以通過將一個斷點,或者使用控制檯記錄,像這樣

error: function(xhr) { 
    console.log(xhr); 
} 

同樣直接檢查的一個參數,成功回調接收三個參數:狀態,返回的數據和XMLHttpRequest對象,這樣你就可以在同樣的方式檢查這些:

success: function(status, data, xhr) { 
    console.log(status, data, xhr); 
} 

你應該尋找響應狀態代碼,並在XHR對象的響應文本明白了什麼錯誤。如果您看到200 OK響應狀態,則從服務器返回的數據可能不會被正確解釋爲JSON數據,因此您應該嘗試將application header服務器端設置爲application/json。

如果您的回覆附加或附加了其他內容,則可能會發生錯誤。特別是在返回之前代碼中發生警告並且您將錯誤報告設置爲ON時。