JSON数组对象无法从jQuery中正确读取

时间:2012-03-19 02:17:39

标签: jquery json

我有点卡住,但这必须是用户错误;从某种意义上说,以下是作品。它为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>

关于为什么会这样的想法?

谢谢, 亚伦。

2 个答案:

答案 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)