Jquery $ .post() - 可以做一整页的帖子请求吗?

时间:2009-11-10 14:53:47

标签: jquery post

我知道我可以使用jQuery和$.post()语法执行带外Post请求。但是,我很想知道jQuery是否有可能在整个页面上引发发布请求(就像提交表单时那样),以便加载一个全新的页面。这可能吗?

DOM中没有表单元素,所以我不能做form.submit()。

5 个答案:

答案 0 :(得分:26)

当我需要发送数据并且在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);

答案 1 :(得分:3)

答案 2 :(得分:0)

不确定我是否收到您的问题,但如果您只想在发布后重定向客户端,只需将客户端指向$ .post的回调函数,如

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

答案 3 :(得分:0)

我认为您正在尝试重新实现默认行为。只需使用浏览器提供的常规提交机制即可。

如果您需要在将数据实际提交到服务器之前检查数据,请将函数绑定到onsubmit事件并执行检查,然后通过返回false中断提交操作或返回true并让浏览器执行所有操作工作。这对你有意义吗?

答案 4 :(得分:0)

我使用以下示例允许多个按钮提交序列化的表单数据但具有不同的选项,例如保存并保存&amp;关。即使我使用jQuery发布序列化数据,整个页面也会重新加载,因为我将ajax post响应数据发送回“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);}
  });
}

您不需要表单元素,因为您可以将其与任何具有唯一ID的元素一起使用。