Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jQuery:处理内部服务器错误响应_Php_Jquery_Internal Server Error - Fatal编程技术网

Php jQuery:处理内部服务器错误响应

Php jQuery:处理内部服务器错误响应,php,jquery,internal-server-error,Php,Jquery,Internal Server Error,我在页面上有一个表单,它通过jQuery向数据库添加新数据。它工作得很好,但有时服务器出故障,我得到一个500(内部服务器错误),但那是因为我的服务器很差 问题是,在PHP向数据库添加内容后,有时会出现服务器错误,但我没有收到成功消息,而是收到了错误,即使添加内容已经完成。那么,如果我出现错误,我应该如何确保PHP不会添加数据呢 [是的,我最终会切换到新服务器,但没有一台服务器是完美的] 以下是脚本: $.ajax({ type: "POST", url: "/clase/do-add"

我在页面上有一个表单,它通过jQuery向数据库添加新数据。它工作得很好,但有时服务器出故障,我得到一个500(内部服务器错误),但那是因为我的服务器很差

问题是,在PHP向数据库添加内容后,有时会出现服务器错误,但我没有收到成功消息,而是收到了错误,即使添加内容已经完成。那么,如果我出现错误,我应该如何确保PHP不会添加数据呢

[是的,我最终会切换到新服务器,但没有一台服务器是完美的]

以下是脚本:

$.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();
          }
        });              
   }
   ...