Javascript/jQuery为多个$.ajax调用将变量设置为object属性
我希望通过$.ajax以JSON的形式发送许多不同的查询 我使用以下方法将这些查询存储在对象中:Javascript/jQuery为多个$.ajax调用将变量设置为object属性,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我希望通过$.ajax以JSON的形式发送许多不同的查询 我使用以下方法将这些查询存储在对象中: var objectName = { "name1": { "queryName": "longname1", "queryAction": "JSONtoSend" }, "name2": { "queryName": "longname2", "queryAction": "JSONtoSend" }, }; 然后,我将完成查询操作并设置它们
var objectName = {
"name1": {
"queryName": "longname1",
"queryAction": "JSONtoSend"
},
"name2": {
"queryName": "longname2",
"queryAction": "JSONtoSend"
},
};
然后,我将完成查询操作并设置它们:
for (var i = 0, len = Object.keys(objectName).length; i < len; ++i) {
var indexName = Object.keys(objectName)[i];
objectName[indexName].queryAction = "";
var JSONtoTransfer = objectName[indexName].queryAction;
}
$.ajax({
type: "POST",
url: 'URL',
data: JSONtoTransfer,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(dataReturn){
alert(dataReturn.blah);
}
});
for(var i=0,len=Object.keys(objectName).length;i
我无法设置var JSONtoTransfer。它给了我一个意外的错误。我如何避免这个错误?如果我直接将它输入到$.ajax的数据参数中,我会得到相同的错误
我正在使用的代码将查询正确地存储在对象中,但我需要一种方法来遍历所有查询并通过$.ajax发送
感谢您的帮助。此代码可能不是最有效的操作方式,因此如果有人有任何建议,也非常欢迎:-)
所以我把原始代码写错了,$.ajax调用应该包含在for语句中
无论如何,我发现有效的方法是创建一个数组,将queryAction推入其中,然后将其字符串化…几个问题:
超出了ajax调用的范围。如果要在每次迭代中填充JSONtoTransfer
,并每次使用此不同的值发出ajax请求,请将ajax调用放入for循环中(虽然我会认真考虑重构这一点,以便您做出一个Ajax调用,并且反序列化它(如果它是您的服务器端代码处理它))JSONtoTransfer
- 您正在将
设置为空字符串,然后将此值分配给objectName[indexName].queryAction
(现在总是空字符串)JSONtoTransfer
- 您的
语法有点混乱。最佳做法是更改for
到for(var i=0,len=Object.keys(objectName).length;i
i、 e.无需将for(var i=0;i
初始化为相同的值。注意:这更多的是为了可读性,而不是(太多)性能。如果在循环中再次使用len
,则此建议不适用len
objectName
实际上已经是JSON数据了。我可能错了,但我认为这应该可以工作(代码更少):
我不确定您想要什么,但正如其他人指出的那样,您的代码存在许多问题,但我认为您希望以迭代方式一个接一个地执行ajax调用。如果这是您想要的,那么请查看jQuery deffered-docs are。希望这有助于在循环对象:va之前,您必须定义JSONtoTransfer变量r JSONtoTransfer=[];对于(…){JSONtoTransfer.push(objectName[indexName].queryAction);}您为什么要设置
objectName[indexName].queryAction=“”;
?@A.Wolff我不是,它将是一个字符串/JSON。@SimonHarper您的代码对我来说没有多大意义……即使如此,您的“JSONtoSend”
无效jsonIt不够清晰,无法理解您要发送的内容。它是字符串吗?是否希望objectName.keys作为POST参数?这是有效的,并且会起作用-但他请求的资源可能需要另一种形式的对象(这就是为什么他试图用将其拆分为)@DeeMac-我有许多不同的JSON查询,我希望存储它们。每个名称对应一个。谢谢。我把它作为一个例子,我实际上并没有将queryAction设置为空字符串。我希望将它设置为字符串,然后由$.ajax调用在“data:”参数字段中使用。不幸的是,我无法更改服务器端代码。我的错误是,$.ajax调用应该包含在For语句中。@SimonHarper看看这个(),也许会有所帮助。此外,为了澄清您想向ajax提供什么样的数据,您可以举个例子吗
var jsonData = {
"name1": {
"queryName": "longname1",
"queryAction": "JSONtoSend"
},
"name2": {
"queryName": "longname2",
"queryAction": "JSONtoSend"
},
};
//Post with AJAX
$.post('url.php', jsonData, 'json')
.done(function(data) {
alert('Succes!')
})
.fail(function(data) {
alert('Failed!')
});
//This does the same (Post with AJAX)
$.ajax({
url: 'url.php', //Get action attribute of the form
type: "POST",
data: jsonData,
dataType: "json",
.done(function() { //or success: function() {
alert( "success" );
})
.fail(function() { //or error: function() {
alert( "error" );
})
.always(function() { //or beforeSend: function() {
alert( "complete" );
});
});