Javascript 让JSONPto工作
我正在尝试使用跨域支持从php服务器访问数据。因此,当我尝试使用数据类型为“jsonp”的$.ajax时,控制台中出现一个错误:Uncaught SyntaxError:Unexpected token文件被解释为javascript文件,请求失败。你有没有办法在没有这个错误的情况下获取数据Javascript 让JSONPto工作,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在尝试使用跨域支持从php服务器访问数据。因此,当我尝试使用数据类型为“jsonp”的$.ajax时,控制台中出现一个错误:Uncaught SyntaxError:Unexpected token文件被解释为javascript文件,请求失败。你有没有办法在没有这个错误的情况下获取数据 $.ajax({ url : 'http://domaine.com/json.php', contentType: "application/json; charset=utf-8",
$.ajax({
url : 'http://domaine.com/json.php',
contentType: "application/json; charset=utf-8",
dataType : 'jsonp',
success : function(data){
console.log(data);
// no enter in this callback
},
complete: function(data1, data2, data3){
// no data from file.js
}
});
您需要向请求中添加
?callback=?
,以便评估正确的回调。但它可能不会被称为回调
。您需要从域中找出它的名称
如果域(和浏览器)支持,您甚至不需要使用JSONP。您可以使用普通请求。您需要向请求中添加
?callback=?
,以便评估正确的回调。但它可能不会被称为回调
。您需要从域中找出它的名称
如果域(和浏览器)支持,您甚至不需要使用JSONP。您可以使用普通请求。首先确保您的PHP脚本支持JSONP。标识需要传递的查询字符串参数,以便脚本返回JSONP。然后在浏览器中直接在地址栏中输入以下地址进行测试:
http://domain.com/json.php?callback=abc
您应该看到以下内容:
abc({ ... some JSON here ... })
如果PHP脚本需要另一个参数,则可能需要调整callback
name参数。如果您看到以下输出({…这里有一些JSON…}
而没有包装在javascript函数中,则可能会出现这种情况)
一旦您确保有一个返回JSONP的有效PHP脚本,您就可以使用它:
$.ajax({
url : 'http://domain.com/json.php',
jsonp: 'callback',
dataType : 'jsonp',
success : function(data){
console.log(data);
// no enter in this callback
},
complete: function(data1, data2, data3){
// no data from file.js
}
});
注意事项:
jsonp:'callback'
参数指定了回调contentType:'application/json'
参数,因为jQuery对JSONP的实现使用了script
标记,它不允许您设置任何请求头首先确保您的PHP脚本支持JSONP。标识需要传递的查询字符串参数,以便脚本返回JSONP。然后在浏览器中直接在地址栏中输入以下地址进行测试:
http://domain.com/json.php?callback=abc
您应该看到以下内容:
abc({ ... some JSON here ... })
如果PHP脚本需要另一个参数,则可能需要调整callback
name参数。如果您看到以下输出({…这里有一些JSON…}
而没有包装在javascript函数中,则可能会出现这种情况)
一旦您确保有一个返回JSONP的有效PHP脚本,您就可以使用它:
$.ajax({
url : 'http://domain.com/json.php',
jsonp: 'callback',
dataType : 'jsonp',
success : function(data){
console.log(data);
// no enter in this callback
},
complete: function(data1, data2, data3){
// no data from file.js
}
});
注意事项:
jsonp:'callback'
参数指定了回调contentType:'application/json'
参数,因为jQuery对JSONP的实现使用了script
标记,它不允许您设置任何请求头如果域支持CORS,jQuery应该为JSONP请求自动添加
callback=?
。如果浏览器支持CORS,我会添加和,因为只有域支持它是不够的。如果域支持CORS,jQuery应该为JSONP请求自动添加回调=?
。如果浏览器支持CORS,我会添加和,因为只有域支持它是不够的。