我有一个 javascript 文件,它生成一些 JSON 并对写入和创建 JSON 文件的 php 文件进行 AJAX 调用。在我开始生成相当大的 JSON 文件之前,一切都运行良好。目前,我有一个 9mb 的 json 文件,并且我知道它的结构正确,因为当我使用 console.log 将其打印出来并手动放入文件时,它可以工作。
但是,Ajax 调用未能成功。我尝试了普通的 XHR 调用和 jQuery Ajax,都失败了并且没有提供太多信息。我在 Chrome 和 Firefox 中尝试过。查看开发人员工具,状态文本显示(失败)并且类型显示待处理。没有出现状态代码,我所拥有的只是 Ajax 错误回调中的 statusText: "error"。我尝试搞乱超时和同步调用,但似乎没有任何效果/
关于如何进一步调试的任何想法?
代码示例
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 中看到超时信息...