Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript post api调用和使用post方法提交表单之间有什么区别?_Javascript_Node.js_Api_Post_Payment - Fatal编程技术网

Javascript post api调用和使用post方法提交表单之间有什么区别?

Javascript post api调用和使用post方法提交表单之间有什么区别?,javascript,node.js,api,post,payment,Javascript,Node.js,Api,Post,Payment,我想调用支付网关,因为该支付网关是使用表单提交调用的,方法为post,我是否可以使用节点js HTTP模块的post API调用调用同一网关,我很困惑,我无法使用post API调用网关,因为它不会重定向到新页面,表单有方法和操作可以通过post调用重定向到新页面 表单数据通常按如下方式发送 address=Stackoverflow&poster=Ashkay 而JSON格式的普通帖子 { "address": "stackoverflow", "poster": "As

我想调用支付网关,因为该支付网关是使用表单提交调用的,方法为
post
,我是否可以使用节点js HTTP模块的post API调用调用同一网关,我很困惑,我无法使用post API调用网关,因为它不会重定向到新页面,表单有
方法
操作
可以通过post调用重定向到新页面

表单数据通常按如下方式发送

address=Stackoverflow&poster=Ashkay
而JSON格式的普通帖子

{
   "address": "stackoverflow",
   "poster": "Ashkay"
}
您可以在NodeJS中模拟表单POST请求,例如:

const request = require("request");

request({
  uri: "http://www.test.com/payment/gateway.php",
  method: "POST",
  form: {
    address: "Stackoverflow",
    name: "Ashkay"
  }
}, function(error, response, body) {
  console.log(body);
});


从浏览器提交表单有多种方式:

  • HTML表单,提交按钮,用户按提交按钮,不涉及Javascript
  • HTML表单在页面中,Javascript获取表单的DOM元素,并调用表单对象上的
    .submit()
    方法
  • 使用XMLHttpRequest接口和POST方法调用Ajax,并手动发送适当的表单数据
  • 使用POST方法调用Ajax Fetch并手动发送适当的表单数据
  • 使用#1或#2,浏览器发送表单,浏览器将注意重定向,并在浏览器中显示表单响应(无论是否重定向)

    使用#3和#4,表单通过Javascript发送,响应返回到Javascript#3不处理重定向#4具有处理重定向的选项。下面是关于上述每个选项的更多信息#3和#4不影响浏览器显示完全不受影响,除非您编写自己的Javascript来处理请求并影响浏览器显示(通过插入内容或将
    window.location
    设置为新URL)


    以下是有关上述计划的更多信息:

    使用XMLHttpRequest的编程Ajax调用不会以任何方式处理重定向或来自Ajax调用的响应。它们只是将该响应返回到Javascript。请记住,重定向只是可以从Ajax调用返回的一种特定类型的响应。这与浏览器提交的表单POST不同

    带有
    fetch()
    接口的编程Ajax调用提供了一个自动跟踪重定向的选项。请参阅
    redirect
    选项。但是,即使在这种情况下,所有
    fetch()
    接口确实是获取重定向URL的内容。它不会导致浏览器页面发生更改。为此,您必须编写自己的Javascript代码,以查看3xx重定向响应,然后将
    窗口位置设置为新的重定向URL。或者,您必须让接口跟随重定向URL然后对新的重定向内容执行一些操作,这些内容将返回到Javascript

    这些编程请求不同于让浏览器为您提交表单。在浏览器提交的情况下(不使用Javascript提交表单),浏览器会根据表单响应返回的任何内容执行重定向并更新浏览器中的显示

    当您通过Ajax提交表单时,浏览器不会自动对服务器响应执行任何操作。该响应返回到您的Javascript,由您的脚本决定如何处理该响应。如果您希望脚本遵循重定向,则必须检查响应,查看其是否为3xx状态,从相应的标头和将et
    window.location
    设置为该新URL。这将导致浏览器显示重定向页面。但是,您必须自己编写该页面,或者找到一个Ajax库,该库提供了执行表单的功能。一个标准Ajax调用只会将表单POST响应返回到您的Javascript—仅此而已。您的脚本必须对此进行处理回应并决定下一步做什么

    我很困惑,我不能使用post API调用网关,因为它不会重定向到新页面


    您可以。您只需编写自己的Javascript来处理编程API调用的响应,如果是3xx重定向,则将
    window.location
    设置为新URL,以指示浏览器加载新的重定向页面。

    感谢您的许可,
    window.location
    到新页面会将我重定向到新页面,但它不会像支付网关页面那样是对该页面的post请求。我想我必须使用带有操作的form post方法来点击对网关页面的post请求。某些url不允许get请求。
    https://stackoverflow.com/a/133997/6790744
    我可以动态创建表单元素,并在javascript中点击请求。@AkshayBande-我不明白你现在问的是什么问题。也许你需要创建一个新问题。你可以使用Javascript或HTML表单发布。仅使用HTML表单自动发布(不通过Javascript)将自动更新浏览器的显示。是的,您可以使用Javascript在当前页面中创建表单。我想通过使用Javascript api调用重定向到新页面,如
    form post action
    https://stackoverflow.com/a/133997/6790744
    告诉我,我可以通过c使用javascript对类似表单的URL进行post调用动态创建表单。我认为仅通过使用API,我可以使用
    winodw.location
    进行重定向,但这不会像对URL的post请求那样。