我有一个由AJAX填充的下拉列表,该列表由另一个下拉列表的onselect触发。 这个AJAX调用一个返回Dictionary的web服务,然后我在jQuery中迭代以填充下拉列表。
我遇到的问题是,在Chrome中,下拉列表是正确排序的,但在IE8中,下拉列表的前两个选项位于错误的位置。
即。 而不是下拉列表:
1
2
5
10
是
5
10
1
2
以前有人遇到过这个吗?它是IE中的一个错误,还是有一些原因导致它发生?迭代的对象是正确的顺序,所以我不明白为什么它会先用于第3 /第4项。
代码:
function changeProduct($tr) {
var $product = $tr.find('select.product');
var $version = $tr.find('select.version');
var $quantity = $tr.find('input.quantity');
var dataString = {
sProductId: $product.val()
};
$.ajax({
type: "POST",
url: "http://site.com/services/calculator.asmx/getVersionOfProduct",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(dataString),
dataType: "json",
success: function(response) {
var JSON = jQuery.parseJSON(response.d);
emptyDropdown($version);
$.each(JSON, function(key, value) {
$version.append($('<option>').val(key).text(value));
});
},
error: function(jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
}
web服务:
Dim dictProducts As IDictionary(Of String, String) = SmsCalculatorProductFunctions.getVersionsForProduct(sProductId)
Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
Dim sb As New StringBuilder
js.Serialize(dictProducts, sb)
Return sb.ToString()
答案 0 :(得分:0)
dictProducts
很可能会被字符串化为对象。
我认为你应该使用数组,因为js对象不是有序的。