2013-06-04 74 views
1

我試圖通過執行以下操作來測試ajax調用是爲了測試目的,但由於某種原因調用永遠不會成功。我一直在四處搜尋,沒有多少我可以找到,這將解釋爲什麼這不起作用。Ajax到PHP調用不成功

$.ajax({ 
    type: "POST", 
    url: "file.php", 
    success: function(data) { 
     if(data == 'true'){ 
      alert("success!"); 
     } 
    }, 
    error: function(data) { 
     alert("Error!"); 
    }}); 

file.php包含以下內容:

<?php 
    return true; 
?> 

可有人請點我在正確的方向。我意識到這看起來很簡單,但我很難過。謝謝。

+2

安裝類似Firebug的(對於FF )用於調試 – 2013-06-04 00:25:53

+0

返回真的做somethi NG?相反,有一些文本只是打印或回顯真實。 – RGV

+0

我忘了提及,如果這有什麼區別,這個ajax調用是在一個iframe中。我在iframe之外嘗試了它,它似乎工作。任何想法,爲什麼會這樣? – NoToBagels

回答

5

return true將使腳本退出。您需要:

echo 'true'; 
+0

由於某種原因,這仍然無法正常工作。我添加了關於Iframes的原始文章的評論,如果這有所作爲。 – NoToBagels

+0

它不起作用,因爲您沒有修整您的響應數據。使用$ .trim(data)=='true',那麼它將工作。祝你好運! –

0

首先檢查你的路。 file.php是否與包含您的javascript的文件位於同一文件夾中?

如果您的路徑不正確,如果您使用的是Chrome瀏覽器,則會在您的JavaScript控制檯上顯示404錯誤。

而且你應該你的php更改爲:

<?php 

echo 'true'; 

一旦你的道路是正確的,你的PHP修正你要善於去。

0

您是否嘗試過直接訪問文件並查看它是否輸出了某些內容?

返回true不應該在這種情況下使用(或者任何其他的,最好使用退出或死亡),所有通過AJAX調用獲得的都是服務器端生成的超文本,您應該使用(如他們之前指出的那樣回聲「真」;)

您也可以嘗試傳統的AJAX調用的XMLHttpRequest(不JQuery的),如果問題仍然存在,然後檢查是否有請求和服務器之間的任何問題..

編輯:另外,不要通過比較來檢查,只需要對'數據'進行警報,看看它是什麼。

0

除了echo'true'建議之外,您還可以嘗試提醒返回到ajax的實際數據。這樣你可以看到你的if語句是否有適當的值/類型。

success: function(data) { 
    alert(data); 
} 
0

試試這個,新的AJAX語法

$.ajax({ type: "POST", url: "file.php" }).done(function(resp){ 
    alert(resp); 
}); 
0

這是正確的做法:

$.ajax({ 
    type : "POST", 
    url : "file.php", 
    success : function (data) { 
    /* first thing, check your response length. If you are matching string 
     if you are using echo 'true'; then it will return 6 length, 
     Because '' or "" also considering as response. Always use trim function 
     before using string match. 
    */ 
     alert(data.length); 
     // trim white space from response 
     if ($.trim(data) == 'true') { 
      // now it's working :) 
      alert("success!"); 
     } 
    }, 
    error : function (data) { 
     alert("Error!"); 
    } 
}); 

PHP代碼:

<?php 
echo 'true'; 
// Not return true, Because ajax return visible things. 
// if you will try to echo true; then it will convert client side as '1' 
// then you have to match data == 1 
?>