jquery Parsererror в $ .ajaxSetup () - PullRequest
1 голос
/ 12 мая 2011

В настоящее время я работаю над программой в jquery.Моя программа работает нормально в Firefox 3.5, но только после того, как я обновил свой браузер до Firefox 4.0.С тех пор «parsererror» никогда не показывался, и это вызывает у меня сильную головную боль.

Я заметил, что это часть моего кода, которую FIRST 'parsererror' показывает:

$(document).ready( function() { 
   ...

   $.ajaxSetup({
      timeout: 10000,
      error: function(xhr, msg, e) {
        showMessage('HTTP error: ' + JSON.stringify(msg) + '.'); //this is the parsererror
      }    
   });  
   .
   .
})  

И не только это, моя динамическая вкладка больше не появляется на моей странице.Я замечаю, что каждый раз, если удалить эту строку '<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>', она появляется, но мой другой элемент jquery не годится.Я не знаю что не так.Может быть, это какие-то проблемы несовместимости, но я просто не знаю, с чего начать.Пожалуйста, помогите.

РЕДАКТИРОВАТЬ: это JSON, который он вернулся.Это предположительно для моего динамического меню, которое создаст вкладку Evry menu, по которой вы щелкнули.Но это не показывает.

 [ 
      {"title": "File","submenus":[
         {"title": "Open","submenus":[]},         
         { "title": "New", "submenus":[]},
         { "title": "Save as", "submenus":[]},
         { "title": "Save", "submenus":[]}
      ]},
      { "title": "View","submenus":[]},
      { "title": "viewAll", "submenus":[]},
      { "title": "Close","submenus":[]},
      {"title":"jQgrid", "submenus":[]}  
 ]

Ответы [ 2 ]

2 голосов
/ 12 мая 2011

Описание из ошибки jQuery Ajax документация

ошибка (jqXHR, textStatus, errorThrown)

Функция

Функция, вызываемая в случае сбоя запроса.Функция получает три аргумента: объект jqXHR (в jQuery 1.4.x, XMLHttpRequest), строка, описывающая тип возникшей ошибки и необязательный объект исключения, если таковой произошел.Возможные значения для второго аргумента (кроме нуля): «timeout», «error», «abort» и «parsererror».При возникновении ошибки HTTP errorThrown получает текстовую часть состояния HTTP, например «Не найдено» или «Внутренняя ошибка сервера».Начиная с jQuery 1.5, установка ошибки может принимать массив функций.Каждая функция будет вызываться по очереди.Примечание. Этот обработчик не вызывается для междоменных сценариев и запросов JSONP.Это Ajax-событие

В вашем коде у вас есть

JSON.stringify(msg)

Глядя на документы jQuery, вы увидите, что второй аргумент является строкой, а не объектом JSON, таким какВы ожидаете, что это будет.Парсер видит строку и выдает ошибку разбора, которую вы видите.

Теперь, если происходит ошибка, и объект говорит, что произошла ошибка.JSON требует, чтобы имя было заключено в двойные кавычки.Поэтому люди думают:

{
  foo : "bar",
  color : "red",
  num : 1
} 

- это действительный JSON, но это не так.Следующее действительно.

{
  "foo" : "bar",
  "color" : "red",
  "num" : 1
} 
0 голосов
/ 12 мая 2011

Похоже, что приведенный выше код отлично работает - он говорит вам, что XMLHttpRequest вернул ошибку с сообщением "parsererror".Возможно, вы могли бы узнать больше об этом, проверив переменную e в вашей функции ошибки.Но предоставленный вами код не вызывает ошибку, поэтому мы никак не можем ее отладить.

...