我从网址收到以下JSON,我们在此处调用网址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);
});
您还需要检查用户cookie是否为真,否则它不会返回内容,我不这样做,因为我使用的是phonegap和jquery mobile。这可能是问题吗?
答案 0 :(得分:3)
尝试使用方法$.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
答案 1 :(得分:1)
你的代码将遍历param字符串“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. Reference 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加载网址的内容。直到你没有在这个div中看到你的json代码,你的会话变量才能正常工作
如果curl将正确获取您的文件内容,那么将执行ajax。
修改强>
看到?您的问题是正确登录到您尝试获取json文件的Web服务
你的朋友是对的。
您必须在PHP中正确设置$_SESSION,这基本上使用cookies来保留会话信息
尝试正确:
session_start() ;
在你的php代码的开头,在使用ajax之前
参考文献:
- php.net session_start
- PHP session not working with JQuery Ajax?
请注意,这仅适用于同一个域:
Why jquery ajax not sending session cookie
如果您使用的是不同的子域,则可以尝试使用
setcookie
参考文献:
- php.net setcookie
- Cross domain cookie access (or session)
据我所知,没有办法在不同的域内设置cookie
如果你遇到这种情况,我建议你看看这里描述的SimpleSAMLPHP:
cross domain cookies
祝你好运:)