我有一個javascript文件,它生成一些JSON,並對寫入和創建JSON文件的php文件進行AJAX調用。直到我開始生成相當大的JSON文件之前,一切都運行良好。目前,我有一個9MB的json文件,我知道它的結構正確,因爲當我使用console.log打印出來並手動放入文件時,它可以正常工作。調試失敗ajax POST調用,類型正在等待
但是,Ajax調用無法成功。我嘗試了一個正常的XHR調用和jQuery Ajax,都失敗了,並沒有提供太多的信息。我嘗試了Chrome和Firefox。看開發工具,狀態文本說(失敗)和類型說懸而未決。沒有狀態代碼出現,我擁有的是statusText:在Ajax錯誤回調中出現「錯誤」。我試着用超時和同步調用搞亂,但似乎沒有任何工作/
關於如何進一步調試的任何想法?
代碼示例
var name = "test.json";
var json = '{
"type": "FeatureCollection",
"bbox": [
1.4137153625488281,
42.4288330078125,
1.7842082977294922,
42.652313232421875
],
"features": [
{
"type": "Feature",
"bbox": [
1.4137153625488281,
42.4288330078125,
1.7842082977294922,
42.652313232421875
],
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
1.5753068923950195,
42.6473388671875
],
[
1.5828666687011719,
42.63543701171875
],
[
1.5753068923950195,
42.6473388671875
]
]
]
},
"properties": {
"ID_0": "6",
"ISO": "AND",
"NAME_ENGLI": "Andorra",
"NAME_OBSOL": ""
}
}
]
}';
$.ajax({
type:"POST",
url:"log.php",
data: { data: json, file: name },
dataType: "json",
success:function(response) {
console.log(response);
},
error:function(error) {
console.log(error);
}
});
這是log.php:
if (isset($_POST['file'])) {
$file = $_POST['file'];
$data = str_replace("\\", "", $_POST['data']);
file_put_contents($file, $data);
exit();
}
我的主要問題是,當AJAX失敗,你怎麼調試好?我的錯誤回調在這裏沒有提供任何好的信息。我嘗試着在chrome中查看net-internals,但是我找不到那裏。有任何想法嗎?
也許這是一個服務器端問題。當我查看Chrome網絡內部時,我發現處理較小的JSON(長度= 121664)會使POST請求成功,並且網絡內部顯示HTTP_TRANSACTION_READ_RESPONSE_HEADERS,但是大型JSON(長度= 7036490)會給我 - > net_error = -324( ERR_EMPTY_RESPONSE)而不是響應頭。雖然我在phpinfo中看不到超時信息...
請發佈代碼示例。你在js中使用回調嗎? – 2012-11-05 18:23:58
也許響應大於服務器允許的響應。 –
只需在瀏覽器中輸入URL並查看服務器是否響應。如果是這樣,你的問題在客戶端。如果不是,它在服務器上。 –