我有一些javascript,可以连续运行50+几次,然后使浏览器崩溃。我在运行php脚本返回json数据的函数中有2个ajax调用。错误处理程序代码表明,返回未捕获错误的是内部(第二个) ajax调用。然后我收到一条408HTTP警告消息,告诉我“服务器超时等待来自客户端的TImeout请求。任何帮助都将不胜感激。以下是代码:
function doTask(btnID)
{
var data =
{
"action": "test"
};
data = $(this).serialize() + "&" + $.param(data);
$.ajax(
{
type: "POST",
dataType: "json",
url: "doTask.php",
data: data,
success: function(data)
{
var result = data['Result'];
document.getElementById('Result').value=result;
// Update result
var balance = result;
document.getElementById('txtAcctBalance').value = balance.toFixed(8);
var post_data = { amount: balance};
$.ajax({
type: "POST",
dataType: "json",
url: "updateAcctBalance.php",
data: post_data,
async: false,
error: function(jqXHR, exception)
{
if (jqXHR.status === 0) {
alert('Not connect.\n Verify Network.');
}
else if (jqXHR.status == 404)
{
alert('Requested page not found. [404]');
}
else if (jqXHR.status == 500)
{
alert('Internal Server Error [500].');
}
else if (exception === 'parsererror')
{
alert('Requested JSON parse failed.');
}
else if (exception === 'timeout')
{
alert('Time out error.');
}
else if (exception === 'abort')
{
alert('Ajax request aborted.');
}
else
{
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
},
error: function(jqXHR, exception)
{
if (jqXHR.status === 0) {
alert('Not connect.\n Verify Network.');
}
else if (jqXHR.status == 404)
{
alert('Requested page not found. [404]');
}
else if (jqXHR.status == 500)
{
alert('Internal Server Error [500].');
}
else if (exception === 'parsererror')
{
alert('Requested JSON parse failed.');
}
else if (exception === 'timeout')
{
alert('Time out error.');
}
else if (exception === 'abort')
{
alert('Ajax request aborted.');
}
else
{
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
return false;
}发布于 2013-11-20 18:39:58
我建议在ajax php脚本中始终使用Try Catch方法,并将错误数据发送回js,因为这将是正常执行。不要使用太多的数据库连接,因为连接的数量是有限的!您应该使用临时文件将来自js的所有临时数据存储为一个队列(带有时间戳),并且应该在php中使用一个收集器脚本,该脚本读取最新的队列文件,如果它们包含的记录超过XX个或其他任何记录,则评估它们,并立即将所有排队的数据保存到数据库中。
https://stackoverflow.com/questions/19595801
复制相似问题