我有如下的 id 数组:
var arr = [1, 23, 6];
我需要将此数组发送到服务器,对其进行解析,然后从 mongoose db 中删除 id。对于我的后端,我使用的是 nodejs express。所以我需要你的建议,我应该如何使用 jQuery 发送数组以及如何在服务器上解析它。
基本上是对@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
)。
好的,请按照以下说明进行操作,您就很好了:
首先,让我们创建我们的节点服务器,我使用 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
数据上运行并做您想做的事情。