Сообщение jQuery с проблемой сериализации IE

#jquery #ajax #serialization #post

#jquery #ajax #сериализация #Публикация

Вопрос:

 var jqxhr = $.post(url, $("#saveShipAdrs").serialize(), function(response) {
      // set form values to view
      var fld;
      $('#editShipAdrs input[name*="Livraison"]').each(function(){ 
          fld = "#show" $(this).attr("name");
          $(fld).html($(this).val());
      });
      // set success message
      $(".success").html("Shipping address updated");
    })
    .error(function(xhr, ajaxOptions, thrownError) {
         $(".error").html("Shipping address cannot be updated");
         alert(xhr.status "n" xhr.statusText "n" thrownError);
    });
 });
  

Здесь «saveShipAdrs» — это идентификатор формы.

Этот код отлично работает в FF, но не в IE. в IE это дает

 xhr.status = 0
xhr.statusText = error
thrownError = Invalid Argument
  

Я пытался serializeArray и пытался искать другие подобные вопросы, но не нашел решения.

Комментарии:

1. Что возвращает $ («#saveShipAdrs»).serialize() в IE?

2. оно возвращает ShipAdrsAjxRqst=1amp;NomLivraison=VALUEamp;PrenomLivraison=VALUEamp;AdresseLivraison=VALUEamp;CodePostalLivraison=VALUEamp;VilleLivraison=VALUEamp;TelephoneLivraison=VALUEamp;PaysLivraison= ЗНАЧЕНИЕ (т. Е. поле = пара значений) как в IE, так и в FF

3. Статус 0 может означать тот факт, что запрос отменен из-за другого домена. Что такое URL?

4. работает только на localhost. url: localhost/_project_/address.php

5. хорошо, вы были правы, проблема заключалась в том, что я оставил атрибут action пустым в форме. исправлено, спасибо. 🙂

Ответ №1:

Доктор Молл предположил, что статус 0 возвращается, когда запрос отменяется из-за другого домена.

Здесь проблема заключалась в том, что я оставил атрибут action тега form пустым для отправки при self (действие =»» ).

Это не означает, что домен отличается, но когда я помещаю URL текущей страницы в атрибут action, проблема устранена.

Если кто-нибудь хочет подробно объяснить, в чем именно заключалась проблема с пустым действием, это было бы оценено.

Ответ №2:

В jquery в IE 10 (стандартный режим / Quirks) обнаружена ошибка, из-за которой .serialize () и .serizlizeArray () не могут сериализовать данные формы.

 <div id="showRole">
<form>
<input name="roleName" type="text" />
<input name="des" type="text" />
</form>
</div>
  

Исправлено: var data = $ («#showRole input»).serialize(); используйте идентификатор div для ссылки на форму и сериализации данных.

IE просто изменяет дерево DOM, и jquery не может получить элементы.