jQuery 1.4.2 $ .ajax с указанным jsonpCallback завершает работу IE6 / 7 - PullRequest
0 голосов
/ 15 июня 2010

Я опубликовал похожую тему до здесь , но после дальнейшего изучения я обнаружил, что проблема связана с параметром $ .ajax jsonpCallback.

В следующем простом коде он вылетает каждый развремя на 2-й запрос (проблема с кешем?)

<html>
<head>
 <title>Hello world</title>
</head>
<body>
 <span id="ClickMe">Click Me</span>
</body>
<script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
 $(document).ready( function() {
  //console.log('Init');
  alert('asdasd');
  $("#ClickMe").click( function() {
   $.ajax({     
    url: 'http://URL-THAT-CAN-HANDLE-DIFFERENT-CALLBACK-NAMES',
    dataType: 'jsonp',
    jsonpCallback: 'myCustomCallback',
    success: function(data) {

    }
   });
  });

 });
</script>
</html>

Этот код вызовет сбой IE6 и IE7 при втором щелчке на Click Me-span.

Любой, кто сейчас может вызватьэто?

Ответы [ 2 ]

1 голос
/ 11 июля 2010

Я не уверен, что здесь происходит, но такая ситуация возникает, когда http://code.google.com/p/jquery-jsonp/ пригодится

0 голосов
/ 23 февраля 2011

Когда вы устанавливаете свойство jsonpCallback, jQuery добавляет следующий код в ваш документ, поэтому у jsonp есть что-то в глобальной области для вызова.Этот код выглядит примерно так

window['myCustomCallBack'] = function(args){
   success(args); //really more complicated than this because success may not be in scope
   delete window['myCustomCallBack'];
}

Когда вы вызываете этот метод несколько раз, возникает условие гонки между созданием документа ['myCustomCallBack'] и его удалением.Для ответа jsonp возможно возвращение и удаление myCustomCallBack, это приводит к ошибкам.

...