首页 > 解决方案 > Node js将JSON发送到jquery我不明白为什么它不能

问题描述

Server site:
var express = require('express');
var bodyParser = require('body-parser');
var app     = express();
app.use(express.json());  
app.use(bodyParser.urlencoded({ extended: false }));

app.get('/testJson', function (req, res) {
   res.sendFile("/my_project/testJson"+ "/" + "testJson.html" );
})

app.post('/myaction', async function(req, res) {
   var st = req.body.status; 

   res.status(200);
   res.setHeader('Content-Type', 'application/json');
   res.send(JSON.stringify({ status: st }));
});
app.listen(8081, function() {
   console.log('Server running at http://127.0.0.1:8081/');
});

Client site
$.fn.ajaxShow = function(st) {
   xhrct =  $.ajax({
                    type: 'POST',
                    dataType: "json",
                    data : {  status : st   },
                    url: 'http://127.0.0.1:8081/myaction',                      
                    success: function (data) {
                               if(data!=null) {
                                 var fotoData = $.parseJSON(data);
                                  $(fotoData).each(function (i, obx) {
                                        alert(obx.status);
                                    });
                                }       
                             },
                    error: function(XMLHttpRequest, textStatus, errorThrown) 
                     {
                         alert("XMLHttpRequest: 
                              "+XMLHttpRequest.responseText);
                         alert("textStatus: "+textStatus);
                         alert("errorThrown: "+errorThrown);
                     }
                });
  }

我想从 to 发送数据,JSON但有一些错误。它 alert是 null ,是 'error' 并且是 null。在服务器上,我尝试但它不起作用。我做错了什么?node jsjqueryXMLHttpRequest.responseTexttextStatuserrorThrownres.setHeader('Content-Type', 'application/json')res.send(JSON.stringify({ status: st }))

我希望有人帮助我。

标签: javascriptjquerynode.js

解决方案


试试下面的代码

服务器端

var express = require('express');
var bodyParser = require('body-parser');
var app     = express();
app.use(express.json());  
app.use(bodyParser.urlencoded({ extended: false }));

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

app.post('/myaction', async function(req, res) {
   var st = req.body.status; 
   res.status(200);
   res.setHeader('Content-Type', 'application/json');
   res.send({ status: st });
});

app.listen(8081, function() {
   console.log('Server running at http://127.0.0.1:8081/');
});

客户端

    function test(st){
        var reqData = {status:st};
        $.post("http://localhost:8081/myaction",reqData,function( data ) {
          console.log(data);
          alert(data.status);
        })
    }

推荐阅读