Javascript 如何使用jsonp/jquery触发函数
我得到了这个函数:Javascript 如何使用jsonp/jquery触发函数,javascript,jquery,jsonp,Javascript,Jquery,Jsonp,我得到了这个函数: 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) { c
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!!");
});
我想要的是在上触发这个函数(注意它是一个不同的域)
到目前为止,set_url_目标没有被触发,我没有得到任何输出到控制台的信息,没有错误或什么都没有。。为什么?如果外部应用程序不在您的控制之下,恐怕您无法做很多事情,因为您需要更新服务器发送给客户端的响应,才能成功使用JSONP 因此,您有两种选择: a) 在应用程序的服务器端进行调用,并将其返回给客户端 b) 或者,为了完全实现客户端,您可以使用yahoo pipes或其他服务将
json
响应转换为有效的jsonp
响应
下面是一个关于如何使用yahoo管道的示例:
我对许可证不太确定,请检查许可证,以及是否存在相关的API/带宽成本。让我知道它对您的作用。试试这个,注意
jsonp
和jsonpCallback
属性
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!!");
});
有关这方面的更多信息,所以基本上解决方案是使用代理!??我试图用jsonp模拟html5消息传递,但为什么它不起作用呢?但我想做的是做一个客户对客户的请求。。所以你说这是不可能的…为什么?不可能。为什么jsonp是假的,它是否告诉它不要返回jsonp?set_url_目标位于不同域的不同脚本上,而不是我的脚本上。。我想你误解了这个问题
jsonp
设置为false以覆盖回调
名称。
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!!");
});