Php jQuery:处理内部服务器错误响应
我在页面上有一个表单,它通过jQuery向数据库添加新数据。它工作得很好,但有时服务器出故障,我得到一个500(内部服务器错误),但那是因为我的服务器很差 问题是,在PHP向数据库添加内容后,有时会出现服务器错误,但我没有收到成功消息,而是收到了错误,即使添加内容已经完成。那么,如果我出现错误,我应该如何确保PHP不会添加数据呢 [是的,我最终会切换到新服务器,但没有一台服务器是完美的] 以下是脚本:Php jQuery:处理内部服务器错误响应,php,jquery,internal-server-error,Php,Jquery,Internal Server Error,我在页面上有一个表单,它通过jQuery向数据库添加新数据。它工作得很好,但有时服务器出故障,我得到一个500(内部服务器错误),但那是因为我的服务器很差 问题是,在PHP向数据库添加内容后,有时会出现服务器错误,但我没有收到成功消息,而是收到了错误,即使添加内容已经完成。那么,如果我出现错误,我应该如何确保PHP不会添加数据呢 [是的,我最终会切换到新服务器,但没有一台服务器是完美的] 以下是脚本: $.ajax({ type: "POST", url: "/clase/do-add"
$.ajax({
type: "POST",
url: "/clase/do-add",
data: $("#add").serialize(),
dataType: "json",
timeout: 8000,
beforeSend: function() {
var icon = '<p class="loading-add"></p>'; // loading icon
$('form#add').append(icon);
},
success: function(data) {
if (data.error == true) { // php returns error = true if name is invalid
alert('Invalid name.');
$('form#add').find('p').remove();
} else {
// make the addition
}
},
error: function () {
$('form#add').find('p').remove();
alert('Error. Try again.');
}
});
$.ajax({
类型:“POST”,
url:“/clase/do add”,
数据:$(“#添加”).serialize(),
数据类型:“json”,
超时:8000,
beforeSend:function(){
var icon='';//加载图标
$('form#add').append(图标);
},
成功:功能(数据){
如果(data.error==true){//php在名称无效时返回error=true
警报(“无效名称”);
$('form#add')。查找('p')。删除();
}否则{
//添加
}
},
错误:函数(){
$('form#add')。查找('p')。删除();
警报('错误。请重试');
}
});
您可以将ajax调用包装在一个函数中,并在出现错误时再次“重新测试”该函数
与此相关的东西:
jQuery.fn = function yourajaxfunction(){
$.ajax({
type: "POST",
url: "/clase/do-add",
data: $("#add").serialize(),
dataType: "json",
timeout: 8000,
beforeSend: function() {
var icon = '<p class="loading-add"></p>'; // loading icon
$('form#add').append(icon);
},
success: function(data) {
if (data.error == true) { // php returns error = true if name is invalid
alert('Invalid name.');
$('form#add').find('p').remove();
} else {
// make the addition
}
},
error: function () {
$('form#add').find('p').remove();
// ####### i added this:
$(this).yourajaxfunction();
alert('Error. Try again.');
}
});
}
上面使用的空闲功能:
jQuery.fn.idle = function(time){
var o = $(this);
o.queue(function(){
setTimeout(function(){
o.dequeue();
}, time);
});
return o;
};
但最好的办法是修复服务器。。这些只是弥补另一个问题的黑客和补丁:坏服务器。:)
因此,对于任何生产场景来说,这都不是一个好主意。如果添加返回错误,是否可以创建对数据库插入的控件
...
error: function () {
var fError = function() {
$('form#add').find('p').remove();
alert('Error. Try again.');
};
$.ajax({
type: "GET",
url: "/clase/do-check",
data: {id: id}, // id for check
dataType: "json",
success: function(data) {
if (!data.ok)
fError();
},
error: function () {
fError();
}
});
}
...
是因为你的服务器很烂还是因为你的服务器端代码很烂?是因为你的服务器吗?你有shell访问权限吗?是服务器,当我加载页面时,我不断得到各种字符-->èÄWÝrÔ6¾ࢤrÔÔ7äk''`l,也许你需要检查最后一次插入=使用jquery+ajax检查表单内容是否已保存/插入。但无论如何。这是一群黑客。我会修复服务器。:)服务器修复是最好的方法。htaccess中的zlib压缩导致了内部服务器错误和奇怪的字符。谢谢
...
error: function () {
var fError = function() {
$('form#add').find('p').remove();
alert('Error. Try again.');
};
$.ajax({
type: "GET",
url: "/clase/do-check",
data: {id: id}, // id for check
dataType: "json",
success: function(data) {
if (!data.ok)
fError();
},
error: function () {
fError();
}
});
}
...