javascript - 防止表单在没有ajax的情况下提交后重定向

标签 javascript php jquery ajax forms

我的 html 中有一个表单,其中有一个指向不同域的操作 url。提交后,它会重定向浏览器。我希望它被提交但不重定向到另一个页面。我知道我可以使用 Ajax 提交它,但由于域不同,它会给出 CORS 错误。我无法在我自己的 php 文件中镜像请求,因为表单提交是由虚拟信用卡支付系统进行的,并且不允许您镜像它。

那么,有没有什么方法可以在不使用ajax的情况下提交表单但防止重定向。据我所知,不可能用ajax向不同的域发出请求。

最佳答案

解决方案1

AJAX 可以跨域。您需要目标域来在响应上设置适当的 header 。

Access-Control-Allow-Origin: yourdomain.com
Access-Control-Allow-Methods: POST, OPTIONS
Access-Control-Allow-Headers: [anything else you might send]

return false从您的 ajax 调用或调用 preventDefault()以防止浏览器重定向页面。

解决方案2

提交到您自己的服务器端代码并​​模拟事务。但是,您提到他们不允许您镜像它,并且我没有解决此问题的详细信息。您可以向自己的服务器提交 AJAX(没有 CORS 问题,也不需要 header )或普通 POST。

解决方案3 将其提交到他们的服务器,但让他们的服务器重定向回您自己网站上的页面。 通常有一种方法可以通过他们为您提供的任何 API 控制面板进行设置。 再次强调,如果没有具体细节,我无法直接解决问题

解决方案4 将数据加载到 iframe 中并在 iframe 中提交。这可能会出现问题,具体取决于 X-Frame-Options 的值或者如果他们有某种 CSRF token ,但您应该能够在 iframe 中发布表单而无需重定向主页。 iframe也可以隐藏并通过JS提交(在表单上使用submit()方法——不需要ajax)

关于javascript - 防止表单在没有ajax的情况下提交后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20480547/

相关文章:

javascript - 如何使用键为 "@"的文档在 couchDB 中创建 View

javascript - MapMyIndi​​a 未完全加载,但当我打开开发人员工具(按 f12)时,它正在运行

php - tcpdf 无法正确打印带有图像的 HTML 文档 - PHP

javascript - 关于回调函数的 jQuery 术语

javascript - 如何让点击函数每次点击时都触发函数

javascript - 我可以使用 AJAX 'POST' 将数据发布到服务器上的 JSON 文件吗?

javascript - JMeter JSR 223 语言 js 与 javascript

javascript - 设置 window.location 后继续执行 javascript 代码以调用 Controller 中的 get 方法吗?

php - 找不到 Laravel 5 模型命名空间类

php - 在 PHP 中使用 pathinfo 的未定义路径扩展