Jquery $ .ajax асинхронное нечетное поведение - PullRequest
5 голосов
/ 12 апреля 2009

У меня есть такой фрагмент кода

var searchurl="http://mysite.com/searchpath?q=test";
$.ajax({
   type: "GET",
   url: searchurl,
   cache: false,
   dataType : "jsonp",
   async : false,
   success: function(data){
        alert("success");
   }
});
alert("outside ajax");

Проблема в том, что я не вижу асинхронную работу. "outside ajax" - это первое всплывающее окно, которое я получаю, а "success" - второе. Есть ли что-то очевидное, чего мне не хватает?

Добавление из моих комментариев к ответу Анотни

Моя тестовая среда - win xp sp2, FF 3.0.8 / w Firebug + IE 8. и JQuery v1.3.2. Нет ничего очевидного, что я смог найти из клопа.

Не хотите ли попробовать приведенный выше код с этим URL "http://pipes.yahoo.com/pipes/pipe.run?_id=1nWYbWm82xGjQylL00qv4w&_render=json&textinput1=obama&_callback=?"

1 Ответ

6 голосов
/ 13 апреля 2009

Ну, у вас не может быть синхронного запроса jsonp. Реализация jsonp осуществляется путем взлома тега сценария для обеспечения междоменного доступа. Поэтому $ .ajax просто игнорирует атрибут async, потому что он просто не может сделать синхронный запрос jsonp.

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

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