在JQuery中使用数组

时间:2009-07-27 04:48:31

标签: jquery

在我的应用程序中,我有一个像

这样的代码
$(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 .. 因为我想保持这些数组值显示在相应标签的下拉框中......怎么做.......请建议我......

1 个答案:

答案 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"]