0

我正在使用 jQuery 获取名称列表作为 JSON 字符串 -

`

$.ajax({ type: 'POST', url: "../Names.aspx", dataType: 'json', contentType: "application/json; charset=utf-8", data: "NAME=ALL_PROFILES", success: function (data, textStatus, jqXHR)` {

                var html = '';


                var obj = jQuery.parseJSON(data);
                $.each(obj, function (key, val) {
                    html += '<option value="' + val + '">' + val + '</option>';
                    alert("Success" + val);
                })
                $('#selName').append(html);
                $('#selName').selectmenu('refresh');


            },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert('Error ' + jqXHR.val + errorThrown.val + textStatus.val);
                }
            });

后端是一个 asp.net 页面,当我调试时,我得到的字符串为"{"Name":["Maria","John","Raj","Rosh","Tony","Name","test3","test4","test5","test6"]}",我将其放入JSONLint并进行了验证。它在上面的 AJAX 请求中返回undefined错误。如果我尝试使用单个字符串"Name":"John",它会完美运行。添加选项的函数对于 JSON 字符串数组不正确(一旦进入成功块,我将处理它),但我不明白为什么它undefined在返回有效 JSON 字符串时返回错误。任何帮助,将不胜感激。

4

2 回答 2

0

在结果周围加上一个额外的括号,它就可以工作了。这很奇怪,因为 JSONLint 现在没有验证它

于 2012-05-11T01:47:46.690 回答
0

如果您的 aspx 页面返回有效的 JSON 并且您正在使用dataType: 'json',则不应jQuery.parseJSON()在返回的数据上使用,因为 jQuery 已经将返回的 JSON 字符串解析为对象。

如果使用"Name":"John"的是无效的 JSON,那么 JQuery 会进入error回调。

于 2012-04-18T02:33:29.357 回答