请帮我,我无法从主页获取数据我的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 }
请建议我在谷歌和这里搜索了很多,但无法理解
我观察到的错误是使用了数据类型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库https://github.com/hail2u/jquery.query-yql:
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);
}
}