Ответ 1
Думайте, что этот плагин должен сделать трюк: http://www.mimiz.fr/javascript/jquery/en-jquery-postdatas-plugin/?lang=en
Я знаю, что могу сделать внепользовательский запрос с помощью jQuery и синтаксиса $.post()
. Однако мне интересно узнать, возможно ли, чтобы jQuery вызывал почтовый запрос на всей странице (как при отправке формы), чтобы загрузилась новая страница. Возможно ли это?
В DOM нет элемента формы, поэтому я не могу выполнить form.submit().
Думайте, что этот плагин должен сделать трюк: http://www.mimiz.fr/javascript/jquery/en-jquery-postdatas-plugin/?lang=en
Я использую эту функцию, когда мне нужно отправить данные и не иметь формы в DOM:
function postData(actionUrl, method, data) {
var mapForm = $('<form id="mapform" action="' + actionUrl + '" method="' + method.toLowerCase() + '"></form>');
for (var key in data) {
if (data.hasOwnProperty(key)) {
mapForm.append('<input type="hidden" name="' + key + '" id="' + key + '" value="' + data[key] + '" />');
}
}
$('body').append(mapForm);
mapForm.submit();
}
И я называю это следующим образом:
var data= { 'property1': 666, 'property2': 'I am a boy' };
postData('http://urltopostdata.to', 'post', data);
Не уверен, что у меня возник вопрос, но если вы просто хотите перенаправить клиента после публикации, просто наведите клиента на функцию обратного вызова $.post, например
jQuery.post( url, {}, function() { location.href = "somewhere_else.html"; } )
Я думаю, вы пытаетесь повторно реализовать поведение по умолчанию. Просто используйте обычный механизм отправки, предоставляемый браузером.
Если вам нужно проверить данные, прежде чем отправлять их на сервер, привяжите функцию к событию onsubmit и выполните свои проверки, либо прервите действие отправки, вернув false или верните true, и пусть браузер сделает все Работа. Это имеет смысл для вас?
Я использовал следующий пример, чтобы позволить нескольким кнопкам отправлять данные с последовательной формой, но с различными параметрами, например. Сохранить и сохранить и закрыть. Несмотря на то, что я использую jQuery для публикации сериализованных данных, вся страница перезагружается, потому что я отправляю данные ответа post ajax обратно в "document.body".
<form id="myform">
<button id="button1" type="button" onclick="submitButton(true,false)" name="save" value="save">Save</button>
<button id="button1" type="button" onclick="submitButton(true,true)" name="close" value="close">Save and Close</button>
</form>
function submitButton(save,close) {
$.ajax({url:'page.asp', data:''+$('#myform').serialize()+'&save='+save+'&close='+close+'',
type: 'post',
success: function(data){$(document.body).html(data);}
});
}
Вам не нужен элемент формы, поскольку вы можете использовать его для любого элемента с уникальным идентификатором.