如何在express中正确发送id数组

时间:2012-08-19 10:28:21

标签: ajax node.js post express

我有以下数组的ID:

var arr = [1, 23, 6];

我需要将此数组发送到服务器,解析它,并从mongoose db中删除id。对于我的后端,我正在使用nodejs express。所以我需要你的建议我应该如何使用jQuery发送数组,我应该如何在服务器上解析它。

2 个答案:

答案 0 :(得分:7)

基本上是对@ udidu的好答案的评论,但我想要降价格式,所以我会将其作为答案发布。以下是一些小改进建议:

  • 除了javascript方面的网址“/ deleteIds”之外的其他所有内容,所以无论如何提供它都会有效。

  • 您可以将数组作为JSON字符串发送,而不使用对象包装器

    $.ajax({
        url: '/deleteIds',
        type: 'DELETE',
        data: JSON.stringify([1, 2, 3]),
        contentType: "application/json",
        processData: false,
        success: function(data){
            console.log(data);
        }
    });
    
  • 在服务器中,该阵列仅可用req.body

  • 根据REST约定,这应该使用HTTP DELETE方法(我已经更改了jquery。您还需要更改快速代码以执行app.del而不是{ {1}})。

答案 1 :(得分:4)

好的,请遵循这些说明并且你很好:

首先,让我们创建我们的节点服务器,我使用Express模块​​来定义HTTP服务器:

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


app.listen(8080);

app.use(express.bodyParser());

app.get('/', function(req, res){
    var html = fs.readFileSync('index.html');
    res.header("Content-Type", "text/html");
    res.send(html);
});

app.post('/deleteIds', function(req, res){
    console.log(req.body.arr[0]);
    res.json({ success: true });
});

服务器'/'请求返回一个HTML页面,它将创建一个jQuery Ajax请求,这是HTML文件内容:

<html>
<head>
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script type="text/javascript">

        $.ajax({
            url: 'http://localhost:8080/deleteIds',
            type: 'POST',
            data: {
                arr: [ 1, 2, 3]
            },
            success: function(data){
                console.log(data);
            }
        });

    </script>

</head>
<body>
</body>
</html>

正如您所看到的,html文件中的Ajax请求作为POST请求发送,并以数组作为数据,服务器中的/deleteIds表达路径POST函数侦听并使用{{ 1}},请注意我正在使用req.body.arr,如果没有此行,我们将无法从POST请求中获取正文内容。

就是这样..我希望这有助于使用express来理解Node + Ajax请求,从这一点开始,您可以在app.use(express.bodyParser());上运行并使用数据执行您想要的操作。