0

我正在尝试使用 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 对象。这两个调用有什么区别?更重要的是,为什么只有第二个有效?

4

2 回答 2

2

不同之处在于您没有指定数据类型或内容类型

添加

$.ajax({
  url: url,
  dataType: "json",
  contentType: "application/json; charset=utf-8",
  success: successfunc
});

到你的 ajax 调用

于 2012-09-05T05:43:31.540 回答
2

$.getJSON()使用数据类型json$.ajax()没有。如果你想使用标准的$.ajax()你必须明确指定数据类型。对于跨域呼叫,使用数据类型jsonp而不是json。但我认为 YQL 也适用于 json。

于 2012-09-05T05:48:21.057 回答