为什么关联数组qaObj
返回0长度?
$(function(){
var data = "Q$:I am in.A$: out Q$:whats this A$:Answer";
alert("in");
var str = $.trim(data).replace(/(\r\n|\n|\r)/gm,"");
var qaObj = new Array();
if(str != null && str.indexOf("A$:") != -1 && str.indexOf("Q$:") != -1){
var qaPairs = str.split("Q$:"); /**Eliminate first header part**/
qaPairs.shift();
alert(qaPairs);
for(var counter = 0; counter < qaPairs.length; counter++){
var qaSplittedArr = qaPairs[counter].split("A$:");
qaObj[qaSplittedArr[0]] = qaSplittedArr[1];
}
}
alert(qaObj);
alert(qaObj["I am in."]);
});
我无法将qaObj
发送给php。它显示空数组。所以我无法循环。
为什么会这样?
我通过ajax发送。
答案 0 :(得分:2)
qaObj
在这里需要是一个对象({}
),而不是一个数组(new Array()
)。 JavaScript objects是PHP关联数组的等价物。更新了小提琴:http://jsfiddle.net/p6p8jezu/4/
$(function(){
var data = "Q$:I am in.A$: out Q$:whats this A$:Answer";
var str = $.trim(data).replace(/(\r\n|\n|\r)/gm,"");
var qaObj = {};
if(str != null && str.indexOf("A$:") != -1 && str.indexOf("Q$:") != -1){
var qaPairs = str.split("Q$:"); /**Eliminate first header part**/
qaPairs.shift();
alert(qaPairs);
for(var counter = 0; counter < qaPairs.length; counter++){
var qaSplittedArr = qaPairs[counter].split("A$:");
qaObj[qaSplittedArr[0]] = qaSplittedArr[1];
}
}
alert(JSON.stringify(qaObj));
alert(qaObj["I am in."]);
});
答案 1 :(得分:1)
尝试使用纯 Javascript对象而不是数组。
将new Array()
更改为{}
以制作对象。
var qaObj = {};
现在,您可以在此对象上执行您喜欢的类似PHP的关联数组赋值,并获得所需的结果:
qaObj[qaSplittedArr[0]] = qaSplittedArr[1];
在此DEMO中检查您的控制台。
请注意,将元素插入数组的推荐方法是使用.push()
方法,而不是使用类似PHP的语法。