2

我有这个功能:

 var current_url=window.location.href;
$.ajax({url:      'http://api.apps.com/html/'+appid,
      data:      {url:current_url},
      dataType: 'jsonp',
      timeout:  10000,
      jsonp: "set_url_target",
      success: function(data) { console.log(data); },
       error: function(jqXHR, textStatus, errorThrown) { console.log(errorThrown); console.log(textStatus); }
      }).done(function() { 
          console.log("Message has been complete!!");
        });

我想要的是在http://api.apps.com/html/上触发这个功能 (注意它是一个不同的域)。

function set_url_target(url){
    console.log("Url has been recieved: "+url);
}

到目前为止, set_url_target 没有被触发,并且我没有在控制台上打印任何内容,没有错误或什么都没有..为什么?

4

2 回答 2

2

如果外部应用程序不受您的控制,恐怕您无法做太多事情,因为您需要更新服务器发送到客户端的响应才能成功使用 JSONP..

因此您有两个选择:a)在您的应用程序的服务器端进行调用并将其返回给客户端 b)或者完全使其成为客户端,您可以使用诸如雅虎管道或其他将json响应转换为有效jsonp响应的服务。

这是一个关于如何使用雅虎管道进行操作的示例:https ://gist.github.com/316660

我不确定许可证,请检查它们以及是否有相关的 API/带宽成本。让我知道它对你有用。

于 2012-06-24T10:59:01.213 回答
0

试试这个,注意jsonpjsonpCallback属性

    var current_url=window.location.href;
    $.ajax({url:      'http://api.apps.com/html/'+appid,
            data:      {url:current_url},
            dataType: 'jsonp',
            timeout:  10000,
            jsonp : false,
            jsonpCallback: "set_url_target",
       success: function(data) { console.log(data); },
       error: function(jqXHR, textStatus, errorThrown) { console.log(errorThrown); console.log(textStatus); }
  }).done(function() { 
      console.log("Message has been complete!!");
    });

有关这方面的更多信息,AJAX

于 2012-06-24T11:13:10.523 回答