我有一个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并查看服务器是否响应。如果是这样,你的问题在客户端。如果不是,它在服务器上。 –