【发布时间】:2016-01-30 16:08:47
【问题描述】:
我想使用 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);
}
});
..当我被重定向到页面时,它会要求丢失数据-所以我猜帖子请求与标题重定向的协调方式与表单帖子上的方式相同。
并且发布请求也失败:“No 'Access-Control-Allow-Origin'”。我将数据作为“文本”发送,它是一个字符串,输入以“a = b&”的形式连接。我没有转义这个字符串 - 也许我应该使用“encodeURI()”或其他东西(虽然它不是一个 url)?但是为什么“错误”和“成功”都在执行,不应该只是其中一个吗?
我已经阅读了许多使用 .submit() 方法的示例,该方法在用户单击提交按钮时被激活。我的情况不同:在提交时,加载相同的页面,$_POST 通过 PHP 验证(在同一页面上),然后启动 javascript 函数。所以我认为我不能使用“submit()”函数,因为它会在单击提交按钮时做出反应。另一个问题是,我可以从 javascript 模拟这个提交点击吗?
【问题讨论】:
-
success: window.location = "https://hello/theurl",您缺少在处理程序周围包装匿名函数。所以在你的情况下,window.location在所有情况下都会被调用。并且要模拟表单提交,只需在节点上调用submit()DOM 方法(如果您不绑定任何阻止提交行为的 jq 处理程序,您也可以使用 jq 方法) -
很高兴知道,谢谢。
标签: php jquery ajax forms http-post