#jquery #ajax #json
#jquery #ajax #json
Вопрос:
У меня есть следующий код jQuery в попытке заполнить выпадающий список:
<script language="javascript" type="text/javascript">
$(function(){
$("#setStatusDrpDown").change(function(){
$.getJSON("getStatusChangeReasons",
{selectedStatusId: $(this).val(), ajax: 'true'},
function(result) {
alert("here");
for (var i = 0; i < result.length; i ) {
alert("hello");
options = '<option value="' result[i].id '">' result[i].changeReason '</option>';
}
$("select#statusChangeReason").html(options);
});
});
});
</script>
Я знаю, что код запущен, потому что я вижу, как мой контроллер перехватывает его и даже печатает значение selectedStatusId . Чего я не могу понять, так это почему ни одно из моих предупреждений не отображается. Я не вижу никаких ошибок в консоли javascript. Как будто код просто завершает выполнение после контроллера. Приветствуются любые советы!
Ответ №1:
Возможно, ваша служба выдает ошибку или возвращает что-то, что $.getJSON не может понять.
Важно: начиная с версии jQuery 1.4, если файл JSON содержит синтаксическую ошибку, запрос обычно завершается без сбоев. По этой причине избегайте частого ручного редактирования данных JSON. JSON — это формат обмена данными с более строгими правилами синтаксиса, чем у объектной литеральной нотации JavaScript. Например, все строки, представленные в JSON, будь то свойства или значения, должны быть заключены в двойные кавычки. Подробнее о формате JSON см. http://json.org /.
Вы можете обработать ошибку с помощью возвращаемого значения xhr.
// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.getJSON("example.json", function() {
alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
Комментарии:
1. Вы правы, это действительно предупреждение об ошибке. Я возвращаю хэш-набор объектов, и каждый объект имеет . Метод toString переопределен, чтобы его можно было рассматривать как JSON, но, видимо, я все еще делаю что-то не так.
2. Должен ли я возвращать ArrayList или HashSet как объект JSON?
3. Этот ответ привел меня к успеху. Сейчас моя проблема заключается в какой-то циклической ссылке при попытке импортировать библиотеку jackson, но это совершенно новый вопрос.