簡體   English   中英

無法獲取jQuery AJAX以工作節點js express

[英]Cant get jquery AJAX to work node js express

我一直在嘗試讓ajax在Node 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>

我猜這是您的代碼中的錯別字之一:

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

jQuery.ajax()需要一個對象來發送:

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

在服務器上,您可以使用req.body獲取發布的數據:

 console.log(req.body.data);

注意:

為此,您需要具有body-parser ,因此請確保將其包含在上面的代碼配置中。

您能否嘗試使用$http這樣的格式,

$http.post(//url , //data )
   .success (function() {})
   .error(function() {});
$.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在服務器上發布內容?

除了現有的答案,您還應該在AJAX請求中傳遞正確的Content-Type

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM