2011-10-27 15 views
0

我正在填充一個SelectList w /從AJAX調用返回的數據。但是,數據顯示爲一個項目,名稱很長,而不是幾十個項目(短名稱)。我得到了「ABC DEF GHI JKL MNO」而不是「ABC」,「DEF」,「GHI」等等。所以,我的SelectList只有一個附有W /長名字的項目。如何在WebForms中格式化SelectList的AJAX數據?

如果我在調試器中查看返回的數據,我可以根據需要看到出現在不同行上的短值。

我試過使用「html」而不是「json」作爲返回類型,但那沒有任何效果。

這裏是我的服務器端代碼:

private void GetItems(HttpContext context, int myID) 
{ 
    DataTable datatable = GetMyItems(myID); 

    foreach (DataRow myRow in datatable.Rows) 
    { 
     Response.Write(myRow["ColumnName"].ToString() + Environment.NewLine); 
    } 
    Response.End(); 
} 

和JavaScript ...

$.ajax({ 
    url: "../myAjaxPage.aspx?myID=" + myID, 
    type: 'POST', 
    datatype: 'json', 

    success: function (data) { 
     $("<option>").attr("value", data).text(data).appendTo("#<%= mySelectList.ClientID %>"); 
    } 
}); 
+0

你不是真的從'GetItems'返回JSON或HTML。 'data'只是一個長字符串,並且使用那個長字符串,您只會創建一個帶有該長字符串的

回答

2

你沒有返回JSON,你只是返回一個字符串。但是,那很好。只需拆分字符串並迭代結果數組。

success: function (data) { 
    $.each (data.split("\n"), function() { 
     $("<option>").attr("value", this).text(this).appendTo("#<%= mySelectList.ClientID %>"); 
    }); 
}); 
1

你可以返回一個對象數組,而不是一個字符串?我認爲ajax中的換行符被忽略了。你可以做一個$.each(data)如果他們存儲在一個數組對象,這是我認爲你想要做的