我有点卡住,但这必须是用户错误;从某种意义上说,以下是作品。它为select添加了新选项,但是JSON响应中的每个字符都有一个新选项,例如
选择表单
{
[
“
<磷>氮一
米
ë
“
等等。
Firebug Lite将JSON响应记录为:
{"d":"[{\"Name\":\"Monday\"},{\"Name\":\"Tuesday\"},{\"Name\":\"Wednesday\"}]"}
以下是页面来源:
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: '/MyWebService/MyWebService.asmx/GetDays',
dataType: 'json',
data: '{"_category":"Administration"}',
success: function (response) {
// Clear the list and add an instructional item...
$("#FormsSelect").get(0).options.length = 0;
$("#FormsSelect").get(0).options[0] = new Option("Select form", "-1");
// Add each element returned from the server...
$.each(response.d, function (index, category) {
$('#FormsSelect').append(
$('<option></option>').val(index).html(category)
);
});
},
error: function (request, error) {
alert("An error occurred: " + request.status + "\n" + request.responseText);
}
});
});
</script>
关于为什么会这样的想法?
谢谢, 亚伦。
答案 0 :(得分:3)
注意响应
"[{\"Name\":\"Monday\"},{\"Name\":\"Tuesday\"},{\"Name\":\"Wednesday\"}]"
是一个字符串。如果你遍历一个字符串,你可以逐字逐句地获得它。
如果要将字符串解析为数组,则应使用jQuery parseJSON
method执行类似的操作:
var arr = $.parseJSON(response.d);
$.each(arr, function(index, category) {
// ...
另请注意,您可能想要
.html(category.Name);
而不是
.html(category);
答案 1 :(得分:0)
应该是:
$('<option></option>').val(index).html(category.Name)