使用jQuery / Ajax模拟表单提交

时间:2015-10-30 09:21:05

标签: php jquery ajax forms http-post

我想发布一个post请求以及带有jQuery和Ajax的头重定向。通常,当提交表单时,您将被传输到不同的页面,并且您发布的数据也会跟随(以我无法理解的方式)。这是我想用Ajax执行的。如果我这样做:

$.ajax({
 type: "POST",
 url: "https://hello/theurl",
 data: output,
 dataType: 'text',
 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
 success: window.location = "https://hello/theurl",
 error: function(requestObject, error, errorThrown) {
        alert(error);
        alert(errorThrown);
    }
 });

..当我被重定向到页面时,它会要求丢失数据 - 所以我猜这个帖子请求不会与标题重定向一起协调,就像它在表单上一样交。

帖子请求也失败了:"没有' Access-Control-Allow-Origin'"。我将数据发送为" text",这是一个字符串,其输入以" a = b&"的形式连接在一起。我没有逃脱这个字符串 - 也许我应该使用" encodeURI()"或某事(虽然它不是网址)?但为什么两个都是"错误"和"成功"被执行,不应该只是一个吗?

我已经使用.submit()方法阅读了很多示例,该方法在用户单击提交按钮时激活。我的情况不同:在提交时,加载相同的页面,$ _POST进行PHP验证(在同一页面上),然后启动javascript函数。所以我不认为我可以使用" submit()"函数,因为它在单击提交按钮时作出反应。另一个问题是,我可以从javascript模拟此提交点击吗?

1 个答案:

答案 0 :(得分:1)

你在AJAX代码中所做的事情(在修复成功函数之后)是:你正在调用" theurl"页面两次,首先是在带有数据的POST中,然后在完成后,您将在没有数据的GET中再次访问它。如果要将数据重定向到该URL,只需执行form.submit()。