jQuery: функция serialize () не выполняется в запросе IE $ .get? - PullRequest
0 голосов
/ 28 апреля 2011

Просто наткнулся на что-то странное. У меня есть следующий код:

var SubmitHandler = function( target ){
// ..... code ...

   // target is an html form
   target = $( target );

   // .... code ....

       //send get request
       $.get( target.attr( "action" ), target.serialize()+"&AjaxRequest=true", function( data ){

            //add response html to page
            ReplaceElement.html( data );
       });

 // .... code ....

Хорошо, поэтому я не вижу ничего явно неправильного в этом коде. По сути, я просто отправляю запрос jQuery get на сервер, используя атрибут формы "action" в качестве URL, сериализирую форму с помощью функции jQuery serialize и добавляю что-то к сгенерированной строке запроса. Строка запроса, отправленная на сервер, выглядит следующим образом:

?SortBy=e.Name&SortOrder=ASC&AjaxContent=true

Это прекрасно работает во всех браузерах, кроме IE. В IE строка запроса выглядит так:

?&AjaxContent=true

Это похоже на то, что IE даже не запускает функцию target.serialize(). Тем не менее, если я использую alert(target.serialize()), я вижу ожидаемые результаты.

Странно, но мне пришлось добавить следующую переменную, чтобы заставить это работать в IE:

var SubmitHandler = function( target ){

// ..... code ...

   // target is an html form
   target = $( target );

   // .... code ....

       var targetSerialized = target.serialize();

       //send get request
       $.get( target.attr( "action" ), targetSerialized+"&AjaxContent=true", function( data ){

            //add response html to page
            ReplaceElement.html( data );
       });

 // .... code ....

Кто-нибудь знает, почему это произошло?

(на тот случай, если вам интересно, я попробовал это с более подробной $.ajax функцией и получил те же результаты)

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