JSON返回AJAX后jQuery未定义

时间:2012-04-18 02:13:04

标签: ajax json validation jquery-mobile jsonlint

我正在使用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字符串。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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