Javascript 强制JSONP调用将文本响应转换为JSON
如果我有以下要求Javascript 强制JSONP调用将文本响应转换为JSON,javascript,jquery,ajax,json,jsonp,Javascript,Jquery,Ajax,Json,Jsonp,如果我有以下要求 $.ajax({ type: "GET", dataType: "jsonp", jsonp: "callback", jsonpCallback: "my_callback", url: my_https_url, headers:{"Content-Type":"text/html; charset=utf-8"}, success: function(data) { eval("json="+data
$.ajax({
type: "GET",
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "my_callback",
url: my_https_url,
headers:{"Content-Type":"text/html; charset=utf-8"},
success: function(data) {
eval("json="+data);
}
error: function() {
console.log("fail");
}
});
我得到一个服务器响应,状态码是200。响应头表示它正在将text/html作为内容类型发回。但是,我知道内容实际上是格式化的JSON数据。问题是服务器没有配置为接受JSONP请求(我无法更改它)。我之所以使用JSONP方法是因为跨域相关的原因。我返回的错误状态是“parseerror”,因为它不被识别为JSON。有没有一种方法可以覆盖负责解析数据的函数,以便强制将其作为JSON处理?可能使用eval()?如果您的服务器无法创建JSONP格式的响应,并且由于同源限制,您必须使用JSONP,那么您就是运气不佳。JSONP格式的响应是以调用指定回调的可执行脚本的形式出现的 通常无法从其他来源获取JSON。您要么需要JSONP,要么需要一个现代浏览器,该浏览器带有一个配置为允许跨源请求的服务器。如果无法将服务器配置为允许跨源请求,则需要服务器创建JSONP。如果它不能做到这一点,那么你就无法从中获取数据。JSONP是跨源请求的一种变通方法,它需要服务器协作来为响应创建JSONP格式的结构
如果您从服务器获取JSONP结构,而jQuery在尝试将响应解析为JSON时遇到解析错误,那么这是因为服务器发送的任何内容在JSONP结构中都不是合法的JSON。得到一个解析错误的事实意味着jQuery试图将其解析为JSON,并且在尝试这样做时得到了一个错误。如果是这样,那么您有两个选择:
在任何一种情况下,第一步都可能是
console.log()
发送的文本,并准确理解为什么它不被接受为合法的JSON。那么,你最好知道你的选择是什么。如果您想了解这一点,请在问题中添加确切的服务器响应。如果您的服务器无法创建JSONP格式的响应,并且由于相同的源限制,您必须使用JSONP,那么您就是运气不佳。JSONP格式的响应是以调用指定回调的可执行脚本的形式出现的
通常无法从其他来源获取JSON。您要么需要JSONP,要么需要一个现代浏览器,该浏览器带有一个配置为允许跨源请求的服务器。如果无法将服务器配置为允许跨源请求,则需要服务器创建JSONP。如果它不能做到这一点,那么你就无法从中获取数据。JSONP是跨源请求的一种变通方法,它需要服务器协作来为响应创建JSONP格式的结构
如果您从服务器获取JSONP结构,而jQuery在尝试将响应解析为JSON时遇到解析错误,那么这是因为服务器发送的任何内容在JSONP结构中都不是合法的JSON。得到一个解析错误的事实意味着jQuery试图将其解析为JSON,并且在尝试这样做时得到了一个错误。如果是这样,那么您有两个选择:
在任何一种情况下,第一步都可能是
console.log()
发送的文本,并准确理解为什么它不被接受为合法的JSON。那么,你最好知道你的选择是什么。如果您想了解这一点,请在问题中添加确切的服务器响应。如果您的服务器无法创建JSONP格式的响应,并且由于相同的源限制,您必须使用JSONP,那么您就是运气不佳。JSONP格式的响应是以调用指定回调的可执行脚本的形式出现的
通常无法从其他来源获取JSON。您要么需要JSONP,要么需要一个现代浏览器,该浏览器带有一个配置为允许跨源请求的服务器。如果无法将服务器配置为允许跨源请求,则需要服务器创建JSONP。如果它不能做到这一点,那么你就无法从中获取数据。JSONP是跨源请求的一种变通方法,它需要服务器协作来为响应创建JSONP格式的结构
如果您从服务器获取JSONP结构,而jQuery在尝试将响应解析为JSON时遇到解析错误,那么这是因为服务器发送的任何内容在JSONP结构中都不是合法的JSON。得到一个解析错误的事实意味着jQuery试图将其解析为JSON,并且在尝试这样做时得到了一个错误。如果是这样,那么您有两个选择:
在任何一种情况下,第一步都可能是
console.log()
发送的文本,并准确理解为什么它不被接受为合法的JSON。那么,你最好知道你的选择是什么。如果您想了解这一点,请在问题中添加确切的服务器响应。如果您的服务器无法创建JSONP格式的响应,并且由于相同的源限制,您必须使用JSONP,那么您就是运气不佳。JSONP格式的响应位于