【问题标题】:AJAX POST Request to Express Server from PHP Webpage (Same or Different Ports)?从 PHP 网页到 Express 服务器的 AJAX POST 请求(相同或不同端口)?
【发布时间】:2023-03-17 22:46:01
【问题描述】:

单击按钮时,我想通过 AJAX 从网站向快速服务器发送 POST 请求。当我在与网站相同的端口 (localhost:8080) 上运行服务器时,网站不再呈现,并且我收到一条消息,指出“无法获取 /mogle/income.php”、“mogle/income.php”正在我要从中发送请求的网页。当我在不同的端口 (localhost:8000) 上运行服务器时,AJAX POST 调用不再起作用。以我目前的理解,只能使用 JSONP 向不同的端口发送请求,但是 JSONP 只能处理 GET 请求,而我需要使用 POST。

我尝试在我的 server.js 文件中放置一个 app.get 函数(参见下面的代码 sn-p),以解决当服务器在与网站相同的端口上运行时网页不呈现的问题,但是当我去“localhost:8080/mogle/income.php”,文件下载而不是渲染,我相信这是因为它是 PHP 文件而不是 HTML 文件。但是,即使这可行,我是否必须在 server.js 文件中为网站上的每个其他网页(homepage.php、login.php 等)创建一个 app.get 语句?

app.get("/mogle/income.php", (req, res) => {
  // "../../" because the server file is in two folders
  res.sendFile(path.join(__dirname, "../../income.php"));
});

app.post("/path", async (req, res) => {
  // Process response
});

就端口而言,从网站向服务器发送请求(POST 和 GET)的约定是什么?

【问题讨论】:

    标签: javascript express web


    【解决方案1】:

    解决办法如下

    • 首先需要在您的服务器上允许所有这些 POST/GET/PUT 请求,通过 更新标头值

      const express = require('express')
      const bodyParser = require('body-parser');
      const app = express()
      
      app.use(bodyParser.json());
      app.use(bodyParser.urlencoded({extended: true}) );
      
      app.all("/*", function(req, res, next){
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
        res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
        next();
      });
      
      app.post('/yourendpoint', function (req, res) {
        res.send(req.body)
      })
      
      app.listen(8080, function () {
        console.log('Server Listening on - localhost:8080!')
      })
      

    并在您的客户端发布如下数据(Angular 示例)

    let myDataObj = { name: "test", age: 22 , otherprop: "my post data values"};
    this.http.post('http://localhost:8080/yourendpoint', JSON.stringify(myDataObj), {
      headers: headers
    })
    .subscribe(data => {
      console.log(data);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      相关资源
      最近更新 更多