2016-06-08 133 views
3

首先我贊同我的DATAS在PHP中,我用很簡單的人試了一下,如:AJAX xhr.responseText返回整個HTML

echo json_encode(array("one" => "something")); 

然後我試圖抓住它在我的AJAX調用我以前寫的內對於PHP(和工作):

succcess: function (xhr,data) { 
     var something = JSON.parse(data); 
       console.log(something); 
      } 

但我得到JSON.parse語法錯誤()每次:

Uncaught SyntaxError: Unexpected token < in JSON at position 0

,所以我剛剛註銷了「數據」的xhr.responseText,並且它返回頁面的整個html的

如果我註銷XHR(它應該包含我認爲HTML),我得到這個:

XMLHttpRequest {onreadystatechange: null, readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload…}

我想找回只有JSON編碼數據,而不是整個HTML。

在此先感謝您的答案。


編輯: 問題是,這個PHP中生成的PHP語句,這相當於echo語句之前的HTML內容,所以阿賈克斯無法從我想要發送的數據區分開來。我做了另一個PHP文件來完成這項任務,現在它正常工作。

+0

告訴我們你的PHP頁面的整個地方是'回聲json_encode ...'命令。你是否在該頁面上輸出其他內容? – ADyson

+0

這是一個很長的PHP。我輸出html元素,如選擇選項和輸入字段。對於一些我也使用回聲實際上 –

+1

好的。因此,您應該將創建JSON響應的代碼移動到單獨的文件中,然後可以從您的AJAX請求中專門調用該文件。否則,PHP將只運行整個腳本並返回該腳本輸出的所有內容。或者,或者至少使用if/else來運行腳本的不同部分,具體取決於請求的操作是什麼 – ADyson

回答

0

添加到PHP的響應報頭與內容類型

header('Content-type: application/json; charset=UTF-8'); 
echo json_encode(array("one" => "something")); 
+0

不幸的是,這並不能解決這個問題 –

+0

現在嘗試刪除JSON.parse ,現在你有JSON響應,你可以做console.log(data); –