在我的应用程序中,我有一个像
这样的代码$(document).ready(function(){
$("#"+<?=$r['Attribute']['id'];?>).each(function() {
type= "<?=$r['Attribute']['type'];?>";
attribute_id= "<?=$r['Attribute']['id'];?>";
if(type=="dropdown")
{
var ht = $.ajax({
type: "GET",
url: "http://localhost/FormBuilder/index.php/forms/viewChoices/"+attribute_id,
async: false
}).responseText;
var myObject = eval('(' + ht + ')');
alert(myObject);
// var getchoice=myObject.choices[0]["choice"];
//alert(getchoice);
}
});
}):
在每个attributeid的上面代码中,我看到它的类型是否是Dropdown然后我从Ajax中选择从表选择中重新选择, 我的myObject显示为
{"choices":[{"choice":"Male"},{"choice":"Female"}]}//for a attribute with the label gender
{"choices":[{"choice":"BE"},{"choice":"ME"},{"choice":"MBA"}]}//for a attribute with the label qualification
但是getChoice只显示男性,后来因为我正在使用[0]
我希望保留这些第一个警告值,即数组中的男性和女性 然后在同一个数组中以后只保存,我,mba .. 因为我想保持这些数组值显示在相应标签的下拉框中......怎么做.......请建议我......
答案 0 :(得分:1)
您可以改进的几件事情:
1。使用每个id selector。
$("#"+<?=$r['Attribute']['id'];?>).each
使用each
没有意义,因为此选择器将匹配单个元素,并且元素ID必须是唯一的。
2。 $ .ajax用于处理JSON响应
如果你正在做一个返回JSON的ajax请求,$.getJSON函数是最好的方法,你不必解析响应,它将由jQuery安全地评估。
3。您的请求是同步的。
我不反对同步请求,但我认为你没有明确需要它。
最后,对于您的JSON响应,您可以使用$.map函数轻松展平结果,例如:
var data = {"choices":[{"choice":"Male"},{"choice":"Female"}]};
$.map(data.choices, function(i){return i.choice;});
// returns ["Male", "Female"]