JavaScript返回undefined

我有我从URL中收到的以下JSON,我们在这里称为URL www.blabla.com/testjson

它会返回:

[{"Identifier":1,"Naam":"NOT Given","Adres":"Kopenhagen 9","Postcode":"0000LL","Plaats":"NOT Given","Longitude":"0.00000","Latitude":"0.00000"},
    {"Identifier":2,"Naam":"NOT Given","Adres":"NOT Given 1","Postcode":"0000LL","Plaats":"Rotterdam","Longitude":"0.00000","Latitude":"0.00000"},
    {"Identifier":3,"Naam":"NOT Given","Adres":"NOT Given 6","Postcode":"0000LL","Plaats":"Rotterdam","Longitude":"0.00000","Latitude":"0.00000"},
    {"Identifier":4,"Naam":"NOT Given","Adres":"NOT Given 1","Postcode":"0000LL","Plaats":"Den Haag","Longitude":"0.00000","Latitude":"0.00000"},
    {"Identifier":5,"Naam":"NOT Given","Adres":"NOT Given 218","Postcode":"0000LL","Plaats":"Zoetermeer","Longitude":"0.00000","Latitude":"0.00000"}
];

我想检索这个JSON并返回这个结果,但是我得到了UNDEFINED,这是我的代码:

$.each("www.blabla.com/testjson", function(index, element) {
    $('.result').append(element.Naam);
    alert(element.Naam);
});

你还需要检查用户的cookies是否真实,否则它不会返回任何东西,我不这样做,因为我使用phonegap和jquery mobile。 这可能是问题吗?


尝试使用$.getJSON方法:

$.getJSON('http://www.blabla.com/testjson.json', function(data) {
    $.each(data, function(key, val) {
        $('.result').append(val.Naam);
        alert(val.Naam);
    });
});

有关更多信息,请查阅在线文档:http://api.jquery.com/jQuery.getJSON/

PS:确保您将网站www.blabla.com添加到白名单例外。

有关Phonegap白名单例外的更多信息,请查看联机文档(以下链接适用于Phonegap / Cordova版本2.1.0):http://docs.phonegap.com/en/2.1.0/guide_whitelist_index.md.html#Domain %20Whitelist%20Guide


你的代码将遍历参数字符串“www.blabla.com/testjson”的每个字符,返回'undefined',因为通过写入element.Naam你试图访问一个字符串的名字为'Naam'的不存在的属性。

您需要通过使用ajax调用来加载外部json内容并解析它。

如果您也有兴趣处理错误,这里是Littm答案的更长的替代方案:

    $(document).ready(function()
    {
        $.ajax(
        {
            type: "GET",
            url: "data.json",
            data: "nocache=" + Math.random(),

            // dataType: "json",
            // the above requires 'application/json' as Content-Type headers
            // see 'reference A' in the footer notes
            // if you active this, please modify following code accordingly

            success: function (source, textStatus, jqXHR)
            {
                var data = jQuery.parseJSON(source);
                $.each(data, function(index, value)
                {
                    alert(index+" "+value.Naam);
                });
            },

            error: function(data)
            {
                // alert("ERROR");
            }
        });
    });

笔记:
1.参考A

编辑:要从错误中获取更多信息,请添加以下内容:

$(document).ajaxError(
    function (event, jqXHR, ajaxSettings, thrownError)
    {
        console.log(event);
        console.log(jqXHR);
        console.log(ajaxSettings);
        console.log(thrownError);
    });

然后使用chrome控制台。

编辑:
如果我输入您在浏览器中提供的网址,我会重定向到登录页面。
我认为你的ajax代码也得到这个HTML文档。

尝试检查你的会话:你可以在你的代码中添加一个div,并在这个新的div中使用curl加载你的url的内容。 直到你没有在这个div里面看到你的json代码,你的会话变量才能正常工作。
如果curl能够正确地获取你的文件内容,那么就会执行ajax。

编辑:
看到? 你的问题是要正确登录到你试图获取json文件的web服务。

你的朋友是对的。
您必须在PHP中正确设置您的$ _SESSION,它基本上使用cookie来保留会话信息。

尝试正确:

session_start() ;

在你的php代码的开始,在使用ajax之前。
参考文献:
- php.net session_start
- PHP会话不能与JQuery Ajax一起使用?


请注意,这只能在同一个域内使用
为什么jquery ajax不发送会话cookie

如果您使用的是不同的子域,则可以尝试使用

setcookie

参考文献: - php.net setcookie
- 跨域cookie访问(或会话)

据我所知,无法在不同的域中设置Cookie。
如果你处于这种情况,我建议你看看这里叙述的SimpleSAMLPHP:cross domain cookies


祝你好运 :)

链接地址: http://www.djcxy.com/p/46107.html

上一篇: JavaScript returns undefined

下一篇: chat app using jquery/ajax/php/oop codeigniter