2010-05-01 4 views
0

После нажатия кнопки появляется предупреждающее сообщение с сообщением «успех», а также сообщение, которое не определено, ссылаясь на то, что ничего не было получено из вызова ajax. Я проверил вкладку «net» firebug и действительно получил успешный ответ от сервера «jsonp1272724228884 ({});» Есть идеи?

ответ

1

Если вы хотите использовать результат сразу после совершения обратного вызова ajax, вам необходимо установить атрибут aвызова ajax, чтобы сделать его синхронным. Поскольку это обычно не то, что вы хотите сделать, вы, вероятно, должны обрабатывать ответ другим (асинхронным) способом.

2

Я бы хотел, чтобы alert(json); показывал undefined, потому что он работает до получения ответа.

Помните, что «ajax» является «асинхронным», поэтому предупреждение будет выполняться до того, как ваше значение json получит возможность присвоить значение.

Кроме того, даже если это действительно сработало, переменная json просто ссылается на объект XMLHttpRequest, который был создан. Если вы хотите получить доступ к самим данным, вам нужно сделать это в обратном вызове.

var json; 

$.ajax({ 
    url : 'http://www.example.com/experimental/service.php', 
    type : 'jsonp', 
    success : function(data) { 
        alert('success'); 
        json = data; 
        alert(json); 
       } 
}); 

EDIT:

Там также error: обратного вызова, которые можно назначить. Обратный вызов будет выполняться, если сервер вернет код ошибки. Я предполагаю, что это то, что вы намеревались воспроизвести с помощью try/catch.

+0

Это было! Спасибо огромное! – Shawn

Смежные вопросы