2014-01-25 17 views
0

我得到的JSON響應如下。

{ 
    "stateTables":[ 
     { 
     "stateId":15, 
     "stateName":"kkkkkkkk" 
     }, 
     { 
     "stateId":34, 
     "stateName":"qwqw" 
     }, 
     { 
     "stateId":61, 
     "stateName":"xx" 
     }, 
     { 
     "stateId":66, 
     "stateName":"aaa" 
     } 
    ] 
} 

接收此響應的JavaScript函數如下所示。

var timeout; 
var request; 

function poplateStateListe(id) 
{ 
    if(!request) 
    { 
     if(id===null||id===""||id===undefined||isNaN(id)) 
     { 
      var options = $("#state"); 
      options.find('option').remove().end(); 
      options.append($("<option/>").val("").text("Select")); 

      alert("Please select an appropriate option."); 
      return; 
     } 

     request = $.ajax({ 
      datatype:"json", 
      type: "GET", 
      contentType: "application/json; charset=utf-8", 
      data: {"id": id}, 
      url: "PopulateStateList.action", 
      success: function(response) 
      { 
       var list = response.stateTables; 
       var options = $("#state"); 

       options.find('option').remove().end(); 
       options.append($("<option/>").val("").text("Select")); 

       $.each(list, function() { 
        options.append($("<option/>").val(this.stateId).text(this.stateName)); 
       }); 
      }, 
      complete: function() 
      { 
       timeout = request = null; 
      }, 
      error: function(request, status, error) 
      { 
       if(status!=="timeout"&&status!=="abort") 
       { 
        alert(status+" : "+error); 
       } 
      } 
     }); 
     timeout = setTimeout(function() { 
      if(request) 
      { 
       request.abort(); 
       alert("The request has been timed out."); 
      } 
     }, 30000); 
    } 
} 

我將此回覆寫入<select>列表。然而,我產生這個清單如下。

<select name="entity.stateId" id="state"> 
    <option>Select</option> 
    <option>kkkkkkkk</option> 
    <option>qwqw</option> 
    <option>xx</option> 
    <option>aaa</option> 
</select> 

不添加的<option>value屬性。實際的清單應該是。

<select name="entity.stateId" id="state"> 
    <option value="">Select</option> 
    <option value="15">kkkkkkkk</option> 
    <option value="34">qwqw</option> 
    <option value="61">xx</option> 
    <option value="66">aaa</option> 
</select> 

爲什麼不是value屬性通過$.each功能

$.each(list, function() { 
    options.append($("<option/>").val(this.stateId).text(this.stateName)); 
}); 

添加success處理程序給定的JavaScript函數裏面?我在這裏錯過了很明顯的東西。

回答

2

嘗試使用.attr()代替.val()

$.each(list, function() { 
    options.append($("<option/>").attr('value', this.stateId).text(this.stateName)); 
}); 
+0

這工作正常。謝謝。 – Tiny

2

另一個可能的語法是:

$.each(list, function() { 
    options.append($("<option/>", {value: this.stateId}).text(this.stateName)); 
}); 

希望它能幫助。

相關問題