请帮助我,我无法从我的主页获取数据 我的AJAX请求:
$.ajax({
url:"http://example.com/json.json?jsoncallback=?",
type:"GET",
dataType:"jsonp",
beforeSend:function(){
console.log("before send");
},
success:function(data,status){
console.log("success");
}
});
和我主页上的json.json文件
> { "firstName": "John", "lastName": "Smith", "isAlive": true,
> "age": 25, "address": {
> "streetAddress": "21 2nd Street",
> "city": "New York",
> "state": "NY",
> "postalCode": "10021-3100" }, "phoneNumbers": [
> {
> "type": "home",
> "number": "212 555-1234"
> },
> {
> "type": "office",
> "number": "646 555-4567"
> },
> {
> "type": "mobile",
> "number": "123 456-7890"
> } ], "children": [], "spouse": null }
请建议我通过搜索谷歌和这里尝试了很多,但无法理解
答案 0 :(得分:0)
我观察到的错误是使用数据类型jsonp,其中原始数据是json格式。 因此,如果不是跨域请求,则下面的代码块应该可以正常工作。
$.ajax({
url : "http://example.com/json.json",
type : "GET",
success:function(data,status){
console.log(data); //json data from the requested url
},
failure:(xhr,responseText,status){
//failure block
}
});
但是在你的情况下,如果它是一个跨域请求而你没有你的json数据被回调函数包围,下面的代码块将运行良好,但你必须在你的页面上导入yql库{ {3}}:
function getCrossDomainData(){
try{
var site = "http://example.com/json.json";
var url = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from json where url="' + site + '"') + '&format=json&callback=cbFunc';
$.ajax({
url: url,
dataType: 'jsonp',
});
function cbFunc(data) {
// get the data in this block
}
}catch(err){
console.log("Err in getCrossDomainData : "+err);
}
}