簡體   English   中英

如何從Ajax接收Node.js數據響應

[英]How to receive a nodejs data response from ajax

我目前正在學習express,ajax和nodejs。 因此,當前我正在嘗試使ajax和nodejs彼此交互。 我正在使用ajax將客戶端請求發送到nodejs服務器。 當前,我能夠在服務器中正確調用app.get ,即,在調用console.log(req.query);之前,它可以正常工作console.log(req.query); 在服務器端。 但是,我無法接受服務器發送的數據。 客戶端代碼不會像我嘗試的那樣警告任何返回的數據。

這是我在客戶端的代碼。

function login(){
  var obj = '{"username":"'+$('#username').val()+'", "password":"'+$('#password').val()+'"}';
  $.ajax({
    type:'GET',
    dataType :'json',
    data:{"username": $("#username").val(),
          "password": $("#password").val()},
    url:'http://localhost:10351/function',
    success: function (data) {
        alert("ajax callaback response:"+JSON.stringify(data));
    }
  })

這是我在服務器端的代碼。

var express = require('express');
var app = express();
var http = require("http");
var server = http.createServer();
var portNumber = 10351;
app.use(express.static('public'));

app.get('/function', function(req, res) {
    console.log(req.query);
    res.send(JSON.stringify(req.query));
});

app.listen(portNumber, function() {
    console.log('Currently listening on port ' + portNumber);
});

有小費嗎?

我在以下鏈接中查看答案:

Node.js,Ajax發送和接收Json

而且我想也許我可以改用response.end和response.setHeader嗎? 我不太確定我的問題是在客戶端還是在服務器端。

你不

  1. 收聽正確的端口(10901與10351)
  2. 在網址的查詢部分發送任何參數
  3. 需要JSON.stringify,因為您已經在(req.query)獲得了一個字符串

你應該:

  1. 使端口匹配
  2. 在url中發送參數ex :( url:'http://localhost:10351/function?foo=bar
  3. 刪除stringify ex:

    res.send(req.query)

    alert("ajax callaback response:"+data);

response.end如果你已經使用不需要res.send方法,並response.setHeader如果你想紀念這個內容為JSON將是有益的,所以你可以把一個Content-Type: application/json標題,或使用res.json為您完成這兩項操作(將json字符串化並為您添加正確的標頭)

您的端口在代碼中不匹配。 您說您的呼叫一直有效直到console.log(),如果端口不匹配,它甚至不會在服務器中輸入app.get()。 我認為您剛剛為客戶發布了其他代碼。

我建議您嘗試使用chrome擴展程序的postman,它對於發送和獲取ajax請求響應非常有幫助。 僅通過更改端口號即可使用您的代碼,我可以在郵遞員中獲得響應。

暫無
暫無

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

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