Jquery $ .post () - Можно ли сделать полный пост-запрос? - PullRequest
16 голосов
/ 10 ноября 2009

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

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

Ответы [ 5 ]

27 голосов
/ 19 мая 2012

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

Думаю, что этот плагин должен сделать свое дело: http://www.mimiz.fr/javascript/jquery/en-jquery-postdatas-plugin/?lang=en

0 голосов
/ 22 ноября 2011

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

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

0 голосов
/ 10 ноября 2009

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

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

0 голосов
/ 10 ноября 2009

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

jQuery.post( url, {}, function() { location.href = "somewhere_else.html"; } )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...