Обработчик успеха getJSON не вызывается без признаков ошибок - PullRequest
0 голосов
/ 22 марта 2012

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

Вот мой вызов AJAX в моем jqGrid loadComplete:

loadComplete : function() {                     
    $.getJSON("getCurrentProject.html", function(results){
        alert(results);
        $(this).jqGrid('setCaption',"Project: " + results);
    });                     

},

Как видите, я просто вызываю URL, чтобы получить строку currentProject и соответствующим образом установить заголовок в jqGrid.

Проблема в том, что функция успеханикогда не вызывать!Я посмотрел в Firebug и увидел, что сервер отвечает единственным ожидаемым значением String (в данном случае «default»).

Что мне здесь не хватает?Должен ли я просто использовать get вместо getJSON?

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Используйте .getJSON() только если вы ожидаете, что ответ на самом деле будет JSON.В вашем случае вы ожидаете строку, поэтому попробуйте:

loadComplete : function() {
    var $this = $(this);               
    $.get("getCurrentProject.html", function(results){
        alert(results);
        $this.jqGrid('setCaption',"Project: " + results);
    },
    "text");
},

Вам может не потребоваться, чтобы последний параметр был .get(), чтобы установить ожидаемый тип на «текст», но с другой стороны, возможно, вы будете -если вы его не предоставите, jQuery сделает «интеллектуальное предположение» относительно типа ответа и может ошибочно угадать.

Обратите внимание, что в вашем ajax обратном вызове this не будет таким же, как в loadComplete функция, поэтому вам нужно сохранить ссылку на нее в переменной за пределами обратного вызова ajax, как показано.

0 голосов
/ 22 марта 2012

Убедитесь, что модуль AJAX возвращает допустимый JSON (http://jsonlint.com/) и что на странице нет синтаксических ошибок. GetJSON может произойти сбой без вывода сообщений, если это так.

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