我正在尝试使用YQL从wordpress博客执行跨域请求。这是我第一次尝试的代码:
var g = {data:""}
function getWP() {
var targeturl = "http://www.mysite.com";
var url = "http://query.yahooapis.com/v1/public/yql?"+
"q=select%20*%20from%20html%20where%20url%3D%22"+
encodeURIComponent(targeturl)+
"%22&format=xml'&callback=?";
var successfunc = function(data) {
if(data.results[0]){
g.data = data.results[o];
} else {
var errormsg = '<p>Error: could not load the page.</p>';
alert(errormsg);
}
}
$.ajax({
url: url,
success: successfunc
});
}
当我尝试这个ajax调用时,返回的data
对象是一个空字符串。但是,当我这样做时:
$.getJSON(url, successfunc);
返回了正确的JSON对象。这两个电话有什么区别?更重要的是,为什么只有第二个工作?
答案 0 :(得分:2)
不同之处在于您没有指定数据类型或内容类型
添加
$.ajax({
url: url,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: successfunc
});
到你的ajax电话
答案 1 :(得分:2)
$。getJSON()使用数据类型 json ,而 $ .ajax()则不会。如果您想使用标准 $ .ajax(),则必须明确指定数据类型。对于跨domail调用,请使用数据类型 jsonp 而不是 json 。但我认为YQL也适用于json。