【问题标题】:Cant get jquery AJAX to work node js express无法让 jquery AJAX 工作节点 js express
【发布时间】:2015-12-28 12:16:35
【问题描述】:

我一直在尝试让 ajax 在节点 js 上工作。这是第一次使用 ajax,所以我一直在尝试使用控制台对其进行测试以检查它是否有效,但是每次尝试时我都没有在控制台上得到响应。

这是我的代码。

<script>

function getMessage() {

    var data = $("#messageselect").val()

    $.ajax({
        url: "/message",
        type: "POST",
        data: JSON.stringify(data)
        dataType: 'json',
        success: function(data) {
            console.log(data);
        }
        error : function(err)
        console.log("error fetching message");
    });
}
</script>

服务器

app.post('/message', function(req, res) {

    console.log(JSON.stringify(req.body));


    Message.findOne({ 'page.message' : req.data }, function(err, message) {

        if(err)
            throw err;

        res.send(message);
    });
});

html

<form method="POST">
                        <select multiple="multiple" class="messageselect" onchange="getMessage()" id="messageselect">
                            <% if(message) { %>
                            <% for(i=messagecount-1;i>=0;i--) { %>
                            <option value="<%= message[i].page.message %>">From: <%= message[i].page.username %> Message: <%= message[i].page.messagetitle %></option>
                            <% } %>
                            <% } %>
                        </select><br><br><br>
                    </form>

【问题讨论】:

  • 如果您在本地引用 jquery,请确保启用 express 静态中间件
  • 第一个块中的当前代码对于error回调有语法错误。
  • 更具体地说,究竟是什么不起作用?

标签: javascript jquery ajax node.js express


【解决方案1】:

我猜这是您代码中的一个拼写错误:

var = data $("#messageselect").val()
//--^^--------------------------------worng way to assign.

jQuery.ajax() 需要一个对象来发送:

var data = { data : $("#messageselect").val() };

在服务器上你可以使用req.body 来获取发布的数据:

 console.log(req.body.data);

注意:

为此,您需要拥有body-parser,因此请确保将其包含在上面的代码配置中。

【讨论】:

  • 实际上不止一个错字,例如缺少逗号和花括号。此外,OP 可能需要一个 bodyparser 来解决这个问题?
  • @adeneo 绝对。 bodyParser 是必需的,正如我在上面提到的一个错字
【解决方案2】:

你能不能试试$http 像下面的格式,

$http.post(//url , //data )
   .success (function() {})
   .error(function() {});

【讨论】:

  • @Sirko 。抱歉,我无法正确阅读您的评论。我接受 。它不是特定角度的代码..
【解决方案3】:
$.ajax({
    url: "/message",
    type: "POST",
    data: JSON.stringify(data)
    dataType: 'json',
    success: function(data) {
        console.log(data);
    }
    error : function(err)
    console.log("error fetching message");
});

它们在错误处理程序中缺少大括号

error : function(err) {
        console.log("error fetching message");
}

也许方法不对,你也可以试试:

$.ajax({
    url: '/message',
    type: 'POST',
    dataType: 'JSON',
    data: {JSON.stringify(data)},
    success: function(data) {
        console.log(data);
    }
    error : function(err) {
        console.log("error fetching message");
    }
});

您是否尝试过使用curl 在服务器上发布内容?

【讨论】:

  • 尝试使用浏览器调试控制台来跟踪您的代码。
【解决方案4】:

除了现有答案之外,您还应该在 AJAX 请求中传递正确的 Content-Type

$.ajax({
    url: "/message",
    type: "POST",
    data: JSON.stringify(data)
    dataType: 'json',
    contentType: 'application/json' //here it is
    //...
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2020-09-18
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多