jquery - 如何从node.js-express获取响应返回ajax

标签 jquery ajax node.js post express

我对 PHP 很熟悉,但我需要学习 Node.js 才能使我的聊天应用程序更加高效。我是 Node.js 的初学者,目前遇到以下问题。

我想要做的是使用jquery从ajax向node.js发送请求并获得响应

我可以使用 php 轻松完成此操作,但 node.js 给我错误。这是到目前为止我的代码...

HTML 的一部分

 $(document).on("click", "#nodesess", function () {
        $.ajax({
            type: "POST",
            url: "http://localhost:3000/",
            success: function(data) {
                alert('Success!')
            },
            error: function() {
                alert('error')
            }
        });
     }); 

在服务器端

var express = require ('express');
var app= express();

app.get ('/', function(req,res){
    res.send('Hello Express');
    console.log("got get");
});
app.post ('/', function(req,res){
    res.send('Hello Express post');
    console.log("got post");
});

var server = app.listen(3000, function(){
    console.log('listening on port 3000');
});

我同时拥有 post 和 get,因为我正在测试两者。此外,在cmd上我能够看到“got post”或“got get”,我只是无法将文本返回到ajax。我是否需要添加 Content-Type 或者我做错了整个事情?在 php 中,我会 POST 到 php 文件,在那里我只需要回显。我回显的内容将被发送回 ajax....我在想 res.send 将与 echo 相同...请帮助

我认为我提到的很重要,html 文件和 node.js 文件不在同一目录中。 Html 实际上位于 xampp 文件夹中,而 Node 位于另一个目录中...是否可以这样做?

最佳答案

-我将数据类型更改为脚本,如 @gizzlyPeakSoftware 评论的那样。起初似乎工作正常,因为它发出“成功!”的警报。但是,当将alert('Success!')更改为alert(data)时,它会发出未定义的警报。

-我做了更多研究,发现问题的发生是因为我正在执行跨域请求,因为 Apache(xampp) 和 node.js 使用不同的端口。因此,我的 jQuery ajax 调用 get/post 默默地失败了。

-为了解决跨域问题,我向 html 添加了回调和数据类型,如下所示...

        $.ajax({
                type: "get",
                url: 'http://localhost:3000/',
                dataType: "jsonp",
                jsonpCallback: "_callback",
                success: function(data) {
                    //alert('Success!');
                    alert(data);
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    alert('error ' + textStatus + " " + errorThrown);
                }
            });

我还更改了我的node.js 文件以反射(reflect)回调更改

var express = require ('express');
var app= express();

app.get ('/', function(req,res){
    //res.send('Hello Express');
    res.send('_callback(\'{"message": "Hello worldd!"}\')');
    console.log("got get");
});
app.post ('/', function(req,res){
    res.send('_callback(\'{"message": "Hello world!"}\')');
    console.log("got post");
});

var server = app.listen(3000, function(){
    console.log('listening on port 3000');
});

关于jquery - 如何从node.js-express获取响应返回ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37468755/

相关文章:

javascript - 使用 laravel 和 ajax 实时搜索后,我的按钮中的 Data-id 属性未显示值

javascript - 使用 $.ajax 发布不起作用

javascript - 类型错误 : done is not a function query callback

javascript - 如何通过 NODE.js javascript 代码中的大写转换来查询 SQL 数据库中的列。

javascript - 如何比较路径是否在同一个文件夹中

javascript - 获取从 div 的高度 + 距顶部的距离滚动的像素数

相当于jquery所有子选择器的javascript

jQuery 触发器在 Safari 中不起作用

PHP 包含函数和 AJAX div 加载

asp.net - 如何将 JSON 对象发送到 ASP.NET Web 服务并在那里处理数据?