我有2个数组。一个包含键,另一个包含输入值,如下所示:
var keys = ['id', 'name', 'category'];
var values = ['1', 'nameVal', 'catVal'];
现在我要做的是使用循环创建一个数据字符串,用于jQuery Ajax函数:
var dataString = 'id=1&name=nameVal&category=catVal';
$.ajax({
data: dataString,
...
});
所以我尝试编写这样的函数:
function generateDataString(keys, values, ID)
{
var dataString = 'id=' + ID;
for (var i = 0; i < values.length; ++i)
{
var dataString += '&' + SOMETHINGHERE + '=' + values[i];
}
return dataString;
}
我已经在values
循环中推送for
,但在 SOMETHINGHERE 的位置,我也需要获取密钥。
我还使用了+=
运算符,我认为这是正确的方法,但是我收到了以下错误:
有谁知道我哪里出错了,以及我如何使用key
中的dataString
?
如果使用jQuery更容易实现这一目标,那么这也很好
答案 0 :(得分:1)
替换:
var dataString += '&' + SOMETHINGHERE + '=' + values[i];
使用:
dataString += '&' + SOMETHINGHERE + '=' + values[i];
你不能添加&#34;到你要声明的变量。 (该声明不应该首先出现在那里)
答案 1 :(得分:1)
你必须摆脱for循环中的var。
var keys = ['id', 'name', 'category'];
var values = ['1', 'nameVal', 'catVal'];
var dataString = 'id=' + '28';
for (var i = 0; i < values.length; ++i)
{
dataString += '&' + keys[i] + '=' + values[i];
}
alert(dataString);
工作jsfiddle:https://jsfiddle.net/fLo65noL/
我用键[i]修改你的SOMETHINGHERE,我认为你的身份证是28岁。
您将拥有类似:id=28&id=1&name=nameVal&category=catVal
答案 2 :(得分:1)
您的错误是您在该行上有var
这一事实。删除var
。
但是没有必要生成字符串,使用对象。
var keys = ['id', 'name', 'category'];
var values = ['1', 'nameVal', 'catVal'];
var data = {};
for (var i=0;i<keys.length;i++){
data[keys[i]] = values[i];
}
$.ajax({
data: data,
...
});
实际上,没有必要拥有两个数组,只需要启动对象。
var data = {
'id' : "1",
'name' : "nameVal",
'category': "catVal"
};
答案 3 :(得分:0)
这部分代码会导致问题
for (var i = 0; i < values.length; ++i)
{
var dataString += '&' + SOMETHINGHERE + '=' + values[i]; // This one
}
你在这里要做的是你要声明变量&#34; dataString&#34;但是当你创建它时,将一些字符串附加到变量内容。
你已经在循环之前延迟了变量,所以不需要在循环中的每一步重新声明它,特别是如果你想在每一步附加一些字符串。
for (var i = 0; i < values.length; ++i)
{
dataString += '&' + SOMETHINGHERE + '=' + values[i]; // This one
}