#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 не может получить элементы.