2013-02-13 76 views
0

我有一个脚本,应该通过ajax发送表单数据到PHP脚本。不幸的是,它不工作我知道$ .ajax有一个错误,但我不知道如何查看该错误,此刻我设置了这样的错误只是警告'失败'。无法找到错误的根源,解决这个问题非常棘手,我如何查看这个错误?我没有经验调试ajax:S谢谢!无法读取jQuery Ajax错误

 $('.jSubmit').click(function() { 

     var form_data = $(this).closest('form').serialize(); 
     var form_id = $(this).closest('form').attr("id"); 

     function text_success(return_data) { 

      if(form_id == "page_form") { 
      $('#trans_div').append('<div id="pop_up"><div>Thank you, we will be in touch shortly.</div></div>'); 
      $('#trans_div').css('display','block').animate({opacity: 0.9}, 800, function() { 

       $('#trans_div').delay(1500).animate({opacity: 0.0}, 800, function() { 

         $(this).css('display','none'); 

       }); 

      }); 

      $(this).closest('form').find("input[type=text], textarea").val(""); 
      } 
      else 
      { 
      //$('.form_bottom_text').html(return_data); 
      alert('no'); 
      } 

     } 


     function text_failure() { 

      if(form_id == "page_form") { 
      //$('#trans_div').css('display','block').animate({opacity: 0.9}); 
      //$('#trans_div').append('<div id="pop_up"><div>Failed to send message.</div></div>'); 
      //$(this).closest('form').find("input[type=text], textarea").val(""); 
      alert('failed'); 
      } 
      else 
      { 
      $('.form_bottom_text').html('Error Occurred'); 
      } 

     } 


      $.ajax ({ 
      url:"form.php", 
      type:'POST', 
      data: form_data, 
      success: function(return_data) { 
       text_success(return_data); 
       }, 
      error: function() { 
       //text_failure(); 
       alert('fail'); 
       }    
      }); 


     }); 
+0

[如何获取jQuery $ .ajax错误响应文本?](http://stackoverflow.com/questions/1637019/how-to-get-the-jquery-ajax-error-response-text ) – Nix 2013-02-13 04:13:44

回答

0

你为什么不充分利用你实现回调,并通过适当的参数为"error"

.ajax documentation

类型:Function(jqXHR jqXHR,字符串textStatus,字符串errorThrown)
一个函数,如果请求不被调用。函数接收 三个参数:jqXHR(jQuery中1.4.x中,XMLHttpRequest的)对象, 串描述错误的发生的类型和任选的 异常对象,如果一个发生。

所以这个:

error: function() { 
    //text_failure(); 
    alert('fail'); 
} 

应该是这样的:

error: function(x, stat, msg) { 
    //text_failure(); 
    console.error(x.responseText); 
    console.error(x.status); 
    console.info(x.statusText); 
    console.log(msg); 
} 

你也许会发现相当快发生了什么。

+0

试过了,警报出现空白/空白 – Melbourne2991 2013-02-13 04:17:10

+0

@ user1650757尝试我的更新。 – rockerest 2013-02-13 04:20:57

+0

我查看浏览器控制台吗? – Melbourne2991 2013-02-13 04:39:00

0

可以为所有AJAX做这样的事情请求

$(function() { 
    $.ajaxSetup({ 
     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回调这样

$.ajax ({ 
      url:"form.php", 
      type:'POST', 
      data: form_data, 
      success: function(return_data) { 
       text_success(return_data); 
       }, 
error: function(e, status, txt) { 


} 
}); 

入住这article

+0

我得到一个意想不到的标识符为该代码 – Melbourne2991 2013-02-13 04:42:25

0

奇怪整个问题背后的问题是,通过标记我的提交按钮有一个类型=“提交” ,改变了这个问题。