jQuery uncaught TypeError help - PullRequest
       0

jQuery uncaught TypeError help

0 голосов
/ 18 сентября 2011

Может кто-нибудь пролить свет на то, что означает эта ошибка и как ее отладить. Firefox не вариант, но я использую хром. На локальном хосте ошибок нет, только при загрузке на сервер. Все версии одинаковы и все обновления одинаковы. Вырвал мои волосы, пытаясь понять, с чего начать. Большое спасибо

+++ 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 Ответ

2 голосов
/ 19 сентября 2011

Ошибка, которую вы получаете, означает, что аргумент, переданный обратному вызову успеха $ .ajax, msg, является нулевым. Поэтому, когда вы пытаетесь получить доступ к его свойству status, вы получаете ошибку (потому что нулевое значение не может иметь никаких свойств). Если вы поместите console.log(msg) в первую строку вашего обратного вызова, это должно быть подтверждено; вы просто увидите на консоли null.

Все это говорит о том, что настоящая проблема связана с ответом ajax, а не с обработкой этого ответа Javascript. И это согласуется с тем, что вы сказали о том, как оно работает нормально при запуске с локального компьютера. Вы испытываете какую-то ошибку сервера *, и это именно то, что меняется, когда вы запускаете ее на своем локальном компьютере вместо вашего интернет-сервера.

* «ошибка сервера» в данном случае означает не то, что ваш сервер совершает ошибку, а скорее то, что проблема лежит на стороне сервера, а не на стороне клиента (браузер-JavaScript).

Итак, проверьте заголовки ответа от вызова ajax, а также код на стороне сервера, который выполняется при выполнении вызова. Если вы все еще не можете найти проблему, обновите свой вопрос с помощью заголовков ответов и кода на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...