Javascript 在循环中执行POST请求
我有一个包含数据对象的数组:Javascript 在循环中执行POST请求,javascript,node.js,post,Javascript,Node.js,Post,我有一个包含数据对象的数组: var data = [ {"name":"Jon", "age":22}, {"name":"Ioan", "age":42}, {"name":"Jem", "age":33}, ... other more then 100 items ] var http = require('http'); var options = { hostname: 'localh
var data = [
{"name":"Jon",
"age":22},
{"name":"Ioan",
"age":42},
{"name":"Jem",
"age":33},
... other more then 100 items
]
var http = require('http');
var options = {
hostname: 'localhost',
port: 80,
path: '/users',
method: 'POST',
headers: {
'Content-Type': 'application/json'
} };
//I create following function:
function sendData(data) {
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
req.write(JSON.stringify(data));
req.end();
}
//end try send for each array item:
for (var i=0; i<data.length;i++) {
sendData(data[i]);
}
但只发送了数组中的第一项
我如何发送每个项目作为POST请求
这可能是最好的解决方案
如果请求将以异步方式执行,则效果会更好
更新:
我用异步模块找到了更好的解决方案。
添加以下代码:
var async = require("async");
var tasks = [];
for (i=0;i<result.length;i++) {
tasks.push(sendRequest(data[i]));
}
async.parallel(tasks, function(){
console.log("done");
});
所有请求都是异步发送的。是否使用jQuery
如果是这样,您可以使用$.post方法以及$.each方法
你可以这样做
$.each(data, function(index, val) {
JSON.stringify(val);
$.post(url, val)
.done(function (data) {
alert("got " + data + " back");
});
});
虽然不是最简洁的,但它可以做到这一点,并且可以异步实现
此处为完整dox:
您可以将完整的JSON对象数据发送到服务器并在那里进行解析。为您节省了数百个请求。您使用哪种服务器端语言?我无法更改服务器上的代码。服务器只处理以下数据:{name:Jon,age:22}不,我写的是nodejs,它的小型控制台应用程序。@Gene您可以在node.js上安装jQuery。可能有用。Thx,但我找到了没有jquery的解决方案。