代码之家  ›  专栏  ›  技术社区  ›  dopatraman

$.ajax()与带有YQL和跨域请求的$.getJSON()

  •  0
  • dopatraman  · 技术社区  · 13 年前

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

    2 回复  |  直到 13 年前
        1
  •  2
  •   G-Man    13 年前

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

    添加

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

    到您的ajax调用

        2
  •  2
  •   fahad.hasan    13 年前

    $.getJSON() 使用数据类型 json语言 $.ajax() 没有。如果您想使用标准 $.ajax() 您必须指定 数据类型 明确地对于跨国内邮件调用,请使用数据类型 跨域访问 而不是 json语言 。但是我认为YQL也可以使用json。