Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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 Ajax未在同一端口上向本地主机发送请求_Javascript_Node.js_Ajax - Fatal编程技术网

Javascript Ajax未在同一端口上向本地主机发送请求

Javascript Ajax未在同一端口上向本地主机发送请求,javascript,node.js,ajax,Javascript,Node.js,Ajax,我有一个节点(express)服务器运行在localhost:3000。另一方面,我有一个HTML(client.HTML)文件,它由服务器本身提供服务,路由/client(该文件作为响应发送) 这里我的目标是访问另一个路由,即使用client.html页面上的AJAX调用访问/test(由同一台服务器提供)。然而,从帖子中可以明显看出,它不起作用 不是重复的:到目前为止,我已经尝试了以下帖子中给出的解决方案,但没有成功: • • • 这是我的源代码 server.js const expres

我有一个节点(express)服务器运行在
localhost:3000
。另一方面,我有一个HTML(
client.HTML
)文件,它由服务器本身提供服务,路由
/client
(该文件作为响应发送)

这里我的目标是访问另一个路由,即使用
client.html
页面上的AJAX调用访问
/test
(由同一台服务器提供)。然而,从帖子中可以明显看出,它不起作用

不是重复的:到目前为止,我已经尝试了以下帖子中给出的解决方案,但没有成功:



这是我的源代码

server.js

const express = require("express")
const bodyParser = require("body-parser")

var app = express()
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json())
...
app.get('/', (req, res)=>{
    res.setHeader('Access-Control-Allow-Origin', '*')
    res.send('This server does not support GET requests.')
})

app.post('/test', (req, res)=>{
    res.setHeader('Access-Control-Allow-Origin', '*')
    res.send("response from /test")
})

var port = 3000
var server = app.listen(port)
client.html

<html>
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
    <script>
        function init(){
            $.ajax({
                url: 'http://127.0.0.1:3000/test',
                method: 'POST',
                contentType: 'application/x-www-form-urlencoded'
            }).done((data)=>{
                alert(data);
            });
        }
    </script>
    <body onload="javascript:init()">
    </body>
</html>

函数init(){
$.ajax({
网址:'http://127.0.0.1:3000/test',
方法:“POST”,
contentType:'application/x-www-form-urlencoded'
}).完成((数据)=>{
警报(数据);
});
}
我尝试发送了一个
GET
和一个
POST
请求,但都没有成功

我以前做过,只是没有使用
nodejs
。当我使用
requests
库从Python脚本发送请求时,会收到响应,因此服务器似乎工作正常

仅供参考,我在Windows上


问题出在哪里和/或什么地方?

我尝试使用您的客户端代码(在添加缺少的jquery导入后),以下代码似乎运行良好(我没有使用express):


我建议在您的终端上运行curl,看看您实际得到了哪些头文件-
curl-I localhost:3000

请在
/test
路由中使用
控制台.log(req.body)
检查为什么要发送CORS头文件?不需要that@JaromandaX是的,但我在这一点上,我几乎会尝试任何东西…\n你是否尝试过使用
res.end()
来表示响应的结束?@JaromandaX是的
res.end()
产生了相同的结果。问题在于缺少jquery。我需要一些睡眠。谢谢,帕维尔:-)
const server = http.createServer(function (req, res) {
    console.log("logging stuff")
    res.setHeader('Access-Control-Allow-Origin', '*')
    res.write('This server does not support GET requests.')
    res.end();
});