3

我有如下的 id 数组:

var arr = [1, 23, 6];

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

4

2 回答 2

8

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

  • 省略除 javascript 端 url "/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 约定,这应该使用 HTTPDELETE方法(我已经更改了 jquery。您还需要将 express 代码更改为 doapp.del而不是app.post)。

于 2012-08-19T13:40:21.313 回答
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 函数监听该请求并使用数组获取数组req.body.arr,注意我正在使用app.use(express.bodyParser());,没有这个行我们将无法从 POST 请求中获取正文内容。

就是这样。我希望这有助于理解使用 express 的 Node + Ajax 请求,从这一点开始,您可以在arr数据上运行并做您想做的事情。

于 2012-08-19T10:51:26.887 回答