关于post请求。一般使用两种方法,一个是form,直接submit,此时页面会跳转。另一种是ajax,无需刷新页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于post请求。一般使用两种方法,一个是form,直接submit,此时页面会跳转。另一种是ajax,无需刷新页面相关的知识,希望对你有一定的参考价值。

我想问的是,如果我没有用form,但想向某个php页面发送post请求,且页面能够跳转到该php页面该怎么做?像$.ajax()那样将data直接发送过去,但$.ajax()的话,页面不会跳转(其优点)。可以在success里重定向?但$_POST[]数组的值能够保持么?
感觉没能理解到本质,所以不清楚如何解决。望指教。

ajax方法执行成功后,在success事件跳转就行了。

$.ajax(
    url:"数据提交的路径",
    type:"POST",
    data:"key":"value",
    success:function(data,status)
        document.location.href=\'重定向的URL\';
    
);

追问

谢谢回答~那我用ajax传过去的值还在么?$_POST数组中被赋的那些值生命周期周期是怎么样呢?在处理页面(php)中还能读出来么?
试了一下,似乎传不过去。跳转后,$_POST[key]没能被读出来。果然只能用form么

追答

$.ajax()方法所中的url选项设置的路径为处理POST数据的路径,这个处理的过程是看不见的。success中跳转的路径和数据处理可能没有任何关系。

追问

所以只有form可以用了么?

我是想点击在线支付后可以跳转到选择支付方式页面,并且将该行中隐藏字段里的订单id和费用传递过去的。感觉每行写一个form有点浪费,所以在考虑有没有其他方法。不行的话,就只有改用form了

参考技术A post跳转页面,实现原理:创建一个隐藏的form表单,楼主可以传入一个map调用
传参方法:
var map = ;
map['no'] = 'no';
map['subject'] = "dsf";
function Post(map,URL)
//创建form表单
var temp_form = document.createElement("form");
temp_form.action = URL;
//如需打开新窗口,form的target属性要设置为'_blank'
//temp_form.target = "_self";
temp_form.method = "post";
temp_form.style.display = "none";
$.each(list,function(key,value)
var opt = document.createElement("input");
opt.type = "hidden";
opt.name = key;
opt.value = value;
temp_form.appendChild(opt);
)
document.body.appendChild(temp_form);
temp_form.submit(); //提交数据
return temp_form;
参考技术B 构造一个json对象,用ajax传过去

以上是关于关于post请求。一般使用两种方法,一个是form,直接submit,此时页面会跳转。另一种是ajax,无需刷新页面的主要内容,如果未能解决你的问题,请参考以下文章

From表单中的传值有那几种方法?

Retrofit 处理 post请求 form-data

对于网页中的form元素,method 属性的get和post有何不同?

关于post xml的请求和响应

表单的提交有两种方式:GET和POST,这两种方式的区别是啥?

Post请求的两种编码格式:application/x-www-form-urlencoded和multipart/form-data