2013-02-08 29 views
0

我拉我的頭髮上的JQuery/JSON問題$.getJSON函數的響應是沒有意義的。

因此,這裏是我的Javascript代碼摘錄:

var jqxhr = $.getJSON("myPHPFunction.php", function() { 
     alert("success"); 
    }) 
    .success(function() { alert("second success"); }) 
    .error(function() { alert("error"); }) 
    .complete(function() { alert("complete"); }); 

的JSON由PHP函數返回的是這樣的:

{"sid":"12", "name":"somename", "email":"someemail"} 

完全響應:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 
<body> {"sid":"12", "name":"somename", "email":"someemail"} 
</body> 
</html> 

當我運行腳本,我得到一個對話框說error

幾個在線驗證器已經報告JSON語法正確。那麼爲什麼JQuery失敗?注意php和腳本都在同一個文件夾(在服務器上)和同一個域中。

+3

你的錯誤函數接收哪些參數? – 2013-02-08 19:12:20

+0

如何檢查? – 2013-02-08 19:12:53

+2

'console.log(arguments)'是最簡單的方法。 – 2013-02-08 19:14:08

回答

1

您的回覆不得包含任何HTML!

Propberbly你還需要設置正確的內容類型:

header("Content-Type: application/json"); 
echo('{"sid":"12", "name":"somename", "email":"someemail"}'); 
exit(); 

上面的代碼應該工作。

請注意,您不得在標題行之前輸出任何其他代碼。

+0

大多數情況下這不是必需的。 – 2013-02-08 19:14:41

+0

默認的內容類型是propberbly text/html我除了jQuery會接受這個。 – rekire 2013-02-08 19:15:22

+1

它會接受它。無論如何,所有的json實際上都是文本。 – 2013-02-08 19:16:12

3

從註釋中,您不能將JSON封裝在HTML標記中。您需要確保返回的數據(「查看源代碼」是驗證此問題的好工具)是純JSON。