jQuery未捕获TypeError帮助

时间:2011-09-18 19:07:02

标签: jquery jquery-mobile

有人可以告诉我这个错误意味着什么以及如何调试它。 Firefox不是一个选项,但我使用的是chrome。只有当我上传到服务器时,localhost上没有错误。所有版本都相同,所有更新都相同。撕裂我的头发试图知道从哪里开始。非常感谢

+++ +++ UPDATE 我已经设法在chrome中进行了一些基本的调试,这似乎导致了错误,

Uncaught TypeError: Cannot read property 'status' of null
$.ajax.successfunctions.js:83
jQuery.extend._Deferred.deferred.resolveWithjquery-1.6.2.js:1008
donejquery-1.6.2.js:7168
jQuery.ajaxTransport.send.callback

ajax代码

$(function() {

 $("#newint").submit(function() {

   var send = $(this).serialize();

    $.ajax({
      type: "POST",
      url: "newintake.php",
      cache: false,
      data: send,
      dataType: "json",
      success: function(msg) {
       if( msg.status === 'error') {
          $("#NI-result").fadeIn(1000).delay(2000).fadeOut(1000);
          $("#NI-result").removeClass('error');
          $("#NI-result").removeClass('success');
          $("#NI-result").addClass(msg.status);
          $("#NI-result").html(msg.message);
       }

       else {
          $("#NI-result").fadeIn(2000).delay(3000).fadeOut(2000);
          $("#NI-result").removeClass('error');
          $("#NI-result").addClass('success');
          $("#NI-result").addClass(msg.status);
          $("#NI-result").html(msg.message+msg.info);
          //location.reload(true);
          //$('#brtv-result').addClass("result_msg").html("You have successfully retrieved: "+data.boxnumber).show(1000).delay(4000).fadeOut(4000);
          $("#NI_slider").val(0).slider("refresh");
          $("input[type='radio']").attr("checked",false).checkboxradio("refresh");
          var myselect = $("select#NI_department");
          myselect[0].selectedIndex = 0;
          myselect.selectmenu("refresh");
          var myselect = $("select#NI_address");
          myselect[0].selectedIndex = 0;
          myselect.selectmenu("refresh");
          $("#NI_dd").val('').trigger("dorefresh");
       }

     },
      error:function(){
         $("#NI-result").show();
         $("#NI-result").removeClass('success');
         $("#NI-result").addClass('error');
         $("#NI-result").html("There was an error submitting the form. Please try again. If this continues to happen,<br />please inform the administrator of the site quoting ref#: 0001F");
     }
   });
   return false;
  });
});

1 个答案:

答案 0 :(得分:2)

您收到的错误意味着传递给$ .ajax,msg的成功回调的参数为空。因此,当您尝试访问其status属性时,会出现错误(因为空值不能具有任何属性)。如果你将console.log(msg)放在回调的第一行,这应该得到确认;你只会在控制台中看到null打印出来。

所有这些都表明真正的问题与ajax响应有关,而不是你对该响应的Javascript处理。这与您在本地计算机上运行时如何正常工作有关。您遇到某种类型的服务器错误*,这正是您在本地计算机上运行它而不是互联网服务器时所发生的变化。

*“服务器错误”在这种情况下并不意味着您的服务器出错了,而是问题在于服务器端而不是客户端(浏览器-JavaScript)。

因此,请检查ajax调用的响应头,以及调用时运行的服务器端代码。如果您仍然无法找到问题,请使用回复标题更新您的问题&amp;服务器端代码。