JQuery.getJSON не вызывает обратный вызов
У меня есть html-код:
<button>asd</button>
<script type = "text/javascript">
$('button').click(
function() {
$.getJSON('/schedule/test/', function(json) {
alert('json: ' + json + ' ...');
});
}
);
</script>
и соответствующий вид:
def test(request):
if request.method == 'GET':
json = simplejson.dumps('hello world!')
return HttpResponse(json, mimetype = 'application/json')
Выполняется представление (проверено с использованием print
), переменная json
инициализируется, но не появляется предупреждение. Что я сделал не так? Я уже видел некоторые документы об этом ( http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback например), но я не нашел ответа.
EDIT: проблема заключалась в том, что HttpResponse
не был импортирован... К сожалению, Django не дал никаких ошибок. Все остальное было правильным.
приветствует
Chriss
Ответы
Ответ 1
Вероятно, json неправильно сформирован. Иногда это случается со мной, когда мой код, который должен производить json, вызывает ошибку. Два варианта:
-
Используйте firebug для просмотра ответа JSON
-
Обработка ошибок установки в вашем jquery-коде с помощью параметров jQuery.ajaxSetup, таких как:
$.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) {
alert(textStatus);
alert(errorThrown);
alert(XMLHttpRequest.responseText);
}});
Использование обработки ошибок для отладки велик, так как вы сразу узнаете, когда возникнет проблема с вашим ответом. Вы можете проверить jQuery-документацию для jQuery.ajax, которая имеет все доступные параметры для jQuery.ajaxSetup.
EDIT: третий вариант заключается в том, чтобы просто открыть URL-адрес, который должен генерировать JSON, и запустить вывод через JSON Lint, чтобы проверить его.
Ответ 2
Вы уверены, что JSON действительно? взгляните на ответ напрямую или используйте Firebug
Ответ 3
Я наткнулся на это некоторое время назад и переписал обертку для jQuery Ajax, которая позволяет вам передать нормальный getJSON и дополнительный обратный вызов ошибки для каждого получения.
http://www.nurelm.com/themanual/2010/08/09/self-indulgent-code-jquery-getjson-with-error-handling/
Ответ 4
Я думаю, что вам не хватает шаблона $in url.