Функция обратного вызова пропускается по команде jQueries .getJSON - PullRequest
0 голосов
/ 08 сентября 2010

У меня есть следующий фрагмент кода:

$('input#teamName').live('blur', function() {
  var value = $(this).val();
  if (value) {
    $.getJSON('api/event_company/'+value, function(data) {
      console.log('why does this not want to work?');
    });
  }
});

В основном все, что он делает, это запрашивает некоторые данные с сервера при изменении поля формы.Моя проблема в том, что в функции обратного вызова не вызывается ничего, хотя я могу видеть с помощью firebug, что он успешно отправил запрос на сервер и получил действительный ответ JSON.

Если я изменю параметры getJSONto:

$.getJSON('api/event_company/'+value, alert('Blah'));

Затем появляется предупреждение, как и ожидалось.Есть идеи, что может быть причиной такого поведения?

1 Ответ

4 голосов
/ 08 сентября 2010

Если JSON недействителен, синтаксический анализ завершится неудачно и обработчик не будет вызван. Из getJSON документы:

Важно : Начиная с jQuery 1.4, если файл JSON содержит синтаксическую ошибку, запрос обычно завершается молча. По этой причине избегайте частого ручного редактирования данных JSON. JSON - это формат обмена данными с синтаксическими правилами, которые являются более строгими, чем те, которые используются в литеральной нотации JavaScript. Например, все строки, представленные в JSON, будь то свойства или значения, должны быть заключены в двойные кавычки. Подробнее о формате JSON см. http://json.org/.

Проверьте, проверяет ли ваш JSON .

Ваш второй пример неверен. Вместо этого должно быть,

$.getJSON('api/event_company/'+value, function() {
    alert('Blah');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...