Javascript 使用jquery通过jsonp跨域获取json
我有一个非常简单的$.ajax调用,它假设从给定的url获取json数据。当前确实调用了url并返回了数据,但是localHsonpCallback函数似乎没有被触发 这是我的密码Javascript 使用jquery通过jsonp跨域获取json,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我有一个非常简单的$.ajax调用,它假设从给定的url获取json数据。当前确实调用了url并返回了数据,但是localHsonpCallback函数似乎没有被触发 这是我的密码 function getBuildings(){ $.ajax({ url: 'http://localhost/api/users', type: "GET", dataType: "jsonp", jsonpCallback: "localJ
function getBuildings(){
$.ajax({
url: 'http://localhost/api/users',
type: "GET",
dataType: "jsonp",
jsonpCallback: "localJsonpCallback"
});
}
function localJsonpCallback(json) {
console.log("Fired");
if (!json.Error) {
console.log("Fired");
}
else {
console.log("ERROR");
}
}
因此,如上所述,出于某种原因,localJsonpCallback似乎根本没有被解雇
我还应该提到,在我的Chrome开发工具中,请求链接最终看起来像这样是有原因的
http://localhost/api/users?callback=localJsonpCallback&_=1429708885454
在此问题上的任何帮助都将不胜感激
谢谢。直接在参数列表中尝试将回调方法作为匿名函数
function getBuildings(){
$.ajax({
url: 'http://localhost/api/users',
type: "GET",
dataType: "jsonp",
jsonpCallback: function(data){
console.log("Fired");
if (!data.Error) {
console.log("Fired");
}
else {
console.log("ERROR");
}
}
});
}
如果没有将回调追加到url上,可以将jsonp操作设置为false,然后在选项中设置回调
function getBuildings(){
$.ajax({
url: 'http://localhost/api/users',
type: "GET",
dataType: "jsonp",
jsonp: false,
jsonpCallback: "localJsonpCallback"
});
}
因为javascript是顺序的,所以在调用函数之前定义它们也是一个好主意。ie-在ajax调用之前定义回调函数
jsonp
类型:
字符串重写JSONP请求中的回调函数名。
在“callback=?”部分中,将使用此值代替“callback”
url中查询字符串的名称。因此{jsonp:'onJSONPLoad'}将产生
在“onJSONPLoad=?”中传递给服务器。从jQuery1.5开始,设置
jsonp选项设置为false可防止jQuery添加?回调
字符串到URL或尝试使用=?为了转型。在里面
在这种情况下,还应该显式设置jsonpCallback设置。
例如,{jsonp:false,jsonpCallback:callbackName}
也许这段代码有助于解决您的问题:
$.ajax({
type: 'GET',
url: 'http://localhost/api/users',
data:{todo:"jsonp"},
dataType: "jsonp",
crossDomain: true,
cache:false,
success: success,
error:function(jqXHR, textStatus, errorThrown){
alert(errorThrown);
}
});
var success = function(data){
/* parse JSON */
data = $.parseJSON(data);
//your code here
};
这可能是服务器端的问题,即没有正确使用回调参数,或者服务器端不存在回调参数名称。他们正在查找不同的内容 你说结果正在返回,格式是什么?JSONP必须返回一个脚本块而不是纯数据,因此请确保结果的格式如下
{callbackFunctionName}({hugeDataFromServer});
基本上是脚本调用您的函数
如果不是服务器端,这意味着他们更有可能为回调参数使用不同的名称,例如cb、_callback等,那么您的代码正在工作,尽管该代码使用的是JSONP ie,但它被包装在函数中。返回的数据如下所示。[{id:1,name:Kanye},{id:2,name:Drake}]如果这是jsonp请求的输出,而不是调试结果,则是错误的。我相信服务器端没有为jsonp配置,或者您发送了错误的参数。可以为api/用户请求添加一些服务器端代码吗。