JQuery $.post() - Возможно ли выполнить полный почтовый запрос?

Я знаю, что могу сделать внепользовательский запрос с помощью jQuery и синтаксиса $.post(). Однако мне интересно узнать, возможно ли, чтобы jQuery вызывал почтовый запрос на всей странице (как при отправке формы), чтобы загрузилась новая страница. Возможно ли это?

В DOM нет элемента формы, поэтому я не могу выполнить form.submit().

Ответы

Ответ 2

Я использую эту функцию, когда мне нужно отправить данные и не иметь формы в 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);

Ответ 3

Не уверен, что у меня возник вопрос, но если вы просто хотите перенаправить клиента после публикации, просто наведите клиента на функцию обратного вызова $.post, например

jQuery.post( url, {}, function() { location.href = "somewhere_else.html"; } )

Ответ 4

Я думаю, вы пытаетесь повторно реализовать поведение по умолчанию. Просто используйте обычный механизм отправки, предоставляемый браузером.

Если вам нужно проверить данные, прежде чем отправлять их на сервер, привяжите функцию к событию onsubmit и выполните свои проверки, либо прервите действие отправки, вернув false или верните true, и пусть браузер сделает все Работа. Это имеет смысл для вас?

Ответ 5

Я использовал следующий пример, чтобы позволить нескольким кнопкам отправлять данные с последовательной формой, но с различными параметрами, например. Сохранить и сохранить и закрыть. Несмотря на то, что я использую 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);}
  });
}

Вам не нужен элемент формы, поскольку вы можете использовать его для любого элемента с уникальным идентификатором.