在jQuery中读取复杂的JSON

在jQuery中读取复杂的JSON,jquery,Jquery,我有以下复杂的jSON字符串,它在jQuery1.8中的Ajax调用中返回 listCountries({"totalResults":3,"countrynames":[ {"countryName":"Afghanistan","fName":"parks,area, ...","lng":1,"code":"continent"}, {"countryName":"Albenia","fName":"parks,area, ...","lng":2,"code":"continent"},

我有以下复杂的jSON字符串,它在jQuery1.8中的Ajax调用中返回

listCountries({"totalResults":3,"countrynames":[
{"countryName":"Afghanistan","fName":"parks,area, ...","lng":1,"code":"continent"},
{"countryName":"Albenia","fName":"parks,area, ...","lng":2,"code":"continent"},
{"countryName":"Algeria","fName":"parks,area, ...","lng":3,"code":"continent"}
]});
我想用这个JSON数据填充一个选择框

我正在做以下工作

 $.getJSON(someurl)
            .success(function (data) {
                var list= "";
                for (var i = 0; i < data.countrynames.length; i++) {
                    list += "<option value='" + data.countrynames[i].lng + "'>" + data.countrynames[i].countryName + "</option>";
                }
$("#names").html(list);

但是,该列表不会被填充。有人能提出原因吗。还有一种更好的做法是循环使用这个JSON字符串并填充选择框。

服务器没有返回JSON。它又回来了。当您从不同的域请求数据时,JSONP是您必须采取的额外步骤

这是JSON:

{"totalResults":3,"countrynames":[
{"countryName":"Afghanistan","fName":"parks,area, ...","lng":1,"code":"continent"},
{"countryName":"Albenia","fName":"parks,area, ...","lng":2,"code":"continent"},
{"countryName":"Algeria","fName":"parks,area, ...","lng":3,"code":"continent"}
]}
您的AJAX调用似乎没有请求JSONP,因此您的服务器代码似乎不正确。一个选项是修复服务器代码以返回JSON

或者,如果不能,则此代码将起作用

$.getJSON(someurl)
    .success(function (data) {
        // remove the listCountries function name, and the two parentheses.  
        // Then convert the string into an object
        data = JSON.parse(data.substr(14, data.length - 16))

        // you forgot the select opening & closing tags
        var list= "<select>";
        for (var i = 0; i < data.countrynames.length; i++) {
            list += "<option value='" + data.countrynames[i].lng + "'>" + data.countrynames[i].countryName + "</option>";
        // you forgot the closing bracket
        }
        list += '</select>';
        $("#names").html(list);
    }

您的代码在这种情况下运行良好:您是否检查了控制台中的响应,以确保数据按预期返回到正在执行的成功处理程序中?也适用于ajax:。一定还有别的事情发生了-你能设置一个演示吗?我做的是这样的..我去输入粘贴在我原始帖子中的json..它给出了一个错误SyntaxError:意外的标记l。有人能解释我的代码中的错误以及如何处理这个错误吗?我还注意到,在这两个演示中,您都没有考虑到json字符串以listCountries开头。这就是你的演示有效而我的演示无效的原因吗