2

我有这样的json:

[
{
    "MOD_AXL": 0,
    "MOD_CDS_ID": 110000168,
    "MOD_CV": 0,
    "MOD_CV_CTM": null,
    "MOD_ID": 168,
    "MOD_MFA_ID": 514,
    "MOD_PC": 1,
    "MOD_PCON_END": 199007,
    "MOD_PCON_START": 196303,
    "MOD_PC_CTM": null,
    "Name": "2 CV"},
{
    "MOD_AXL": 0,
    "MOD_CDS_ID": 110004500,
    "MOD_CV": 0,
    "MOD_CV_CTM": null,
    "MOD_ID": 4500,
    "MOD_MFA_ID": 514,
    "MOD_PC": 1,
    "MOD_PCON_END": 198810,
    "MOD_PCON_START": 197808,
    "MOD_PC_CTM": null,
    "Name": "ACADIANE"},
{
    "MOD_AXL": 0,
    "MOD_CDS_ID": 110001660,
    "MOD_CV": 0,
    "MOD_CV_CTM": null,
    "MOD_ID": 1660,
    "MOD_MFA_ID": 514,
    "MOD_PC": 1,
    "MOD_PCON_END": 197712,
    "MOD_PCON_START": 196301,
    "MOD_PC_CTM": null,
    "Name": "AMI"}
// etc..etc..
]​ 

但是如何设置为选择值 MOD_ID,以及选择选项的文本:名称?

我在文本中有这些数据:

$(".man-select").change(function(){
    var mfa_id = $(".man-select").val();
    console.log(mfa_id);
    $.ajax({ 
      url: "/get_models_for_mfa/mfa_id="+mfa_id+".json",
      type: "GET", 
      data: {},
      success: function(text)   //here is object
      {
        console.log("getted");
        $('.mod-select')
         .append($("<option></option>")
         .attr("value",text)
         .text(text)); 
      },
      error: function(){
        //alert('Ошибка javascript');
      },
      dataType : "html"
    });      
  });
4

3 回答 3

5

您可以将字符串解析为 JSON 格式,然后对其进行迭代:

success: function(text){
    var your_object = JSON.parse(text);
    $.each(your_object , function(k, item) { 
       $('.mod-select')
             .append($("<option></option>")
             .attr("value", item.MOD_ID)
             .text(item.Name));
    });
}
于 2012-10-26T16:48:50.230 回答
3

更改dataType : "html"dataType : "json"

接下来在成功函数中进行以下更改

success: function(text){
    console.log("getted");
    vat html = '' ; 
    $.each(text , function(i){
        html += '<option value="' + text[i]["MOD_ID"] + '">'
                           + text[i]["name"] + '</option>' ;
    }
    $('.mod-select').empty().append(html);
}
于 2012-10-26T16:49:26.393 回答
0

如果我正确理解您的问题,您想将返回的 json 列表中的值添加到select列表中吗?
如果是这样,这就是我通常的做法:

var myData = json.d;
var h = [];

$.each(myData, function(i, val) {
    h.push('<option value="' + val.MOD_ID+ '">' + val.Name + '</option>');
});
$('#yourSelect').empty().append(h.join(''));

我首先将值推送到数组,因为它比搜索 DOM 以附加到每个项目的选择要快得多。

于 2012-10-26T16:49:32.303 回答