Jquery 带有远程URL的JSONP不起作用

Jquery 带有远程URL的JSONP不起作用,jquery,json,jsonp,cors,Jquery,Json,Jsonp,Cors,在下面的代码中,有一个url以JSON格式返回结果。我想读取JSON并在代码中解析它。但是,当我运行代码时,结果是空的。似乎我不能发送跨域AJAX请求 我还试图通过编写xhrFields:{withCredentials:true},crossDomain:true,,在代码中包含accesscontrolallow-Credentials:true,但同样不起作用。它给出了以下错误: 错误:未调用jquery11209679192922043036_1428845360268 $.ajax(

在下面的代码中,有一个url以JSON格式返回结果。我想读取JSON并在代码中解析它。但是,当我运行代码时,结果是空的。似乎我不能发送跨域AJAX请求

我还试图通过编写
xhrFields:{withCredentials:true},crossDomain:true,
,在代码中包含
accesscontrolallow-Credentials:true
,但同样不起作用。它给出了以下错误:
错误:未调用jquery11209679192922043036_1428845360268

$.ajax(
{
url:“http://ec.europa.eu/semantic_webgate/query/sparql?dataset=rasff&format=json&limit=10&query=select%20?p%20where%20+{+-s%20?p%20?o+}“,
数据类型:'jsonp',
键入:“获取”,
成功:功能(数据)
{
警报(“来自服务器的数据”+JSON.stringify(数据));
},
错误:函数(jqXHR、textStatus、errorshown)
{
警报(“您无法发送跨域AJAX请求:“+errorshorn”);
}

});对于JSONP,将
数据类型:'json'
设置为
数据类型:'JSONP'
。另外,您的服务器需要了解JSONP。真正的JSONP感知web服务将读取URL的强制
?callback=?
参数

以下是正确的JSONP响应的样子:带响应:

methodName({"ip": "151.194.190.31"});
解决方案1-带回调的JSONP 找出该URL是否支持JSONP和回调名称。如果是这样,请使用回调参数并使用JSONP。没问题。这是一个样本

更多信息:

解决方案2-允许CORS并使用普通JSON 将
访问控制允许源代码:
添加到来自该URL的响应中(如果可以控制它),并将其作为JSON响应(而不是JSONP)处理

解决方案3-DIY JSONP包装器 如果该URL不支持JSONP,并且不允许CORS,那么您可以使用一些服务器端代码对该URL的JSON结果进行欺骗,然后将JSON包装在回调函数中,将标题设置为
Access Control allow Origin:
,并将结果返回到AJAX JSONP脚本。很整洁,是吗

哦,给你:

<?php
// xss-service.php - Bare-bones demo by @Drakes
$callback = isset($_GET["callback"]) ? $_GET["callback"] : "?";

$json = file_get_contents('http://ec.europa.eu/semantic_webgate/query/sparql?dataset=rasff&format=json&limit=10&query=select%20?p%20where%20%20%7B%20?s%20?p%20?o%20%7D');

header('Access-Control-Allow-Origin: *');
header("Content-type: application/json");
echo $callback . "(" . $json . ");";
?>

演示:

对于JSONP,将
数据类型:'json'
设置为
数据类型:'JSONP'
。另外,您的服务器需要了解JSONP。真正的JSONP感知web服务将读取URL的强制
?callback=?
参数

以下是正确的JSONP响应的样子:带响应:

methodName({"ip": "151.194.190.31"});
解决方案1-带回调的JSONP 找出该URL是否支持JSONP和回调名称。如果是这样,请使用回调参数并使用JSONP。没问题。这是一个样本

更多信息:

解决方案2-允许CORS并使用普通JSON 将
访问控制允许源代码:
添加到来自该URL的响应中(如果可以控制它),并将其作为JSON响应(而不是JSONP)处理

解决方案3-DIY JSONP包装器 如果该URL不支持JSONP,并且不允许CORS,那么您可以使用一些服务器端代码对该URL的JSON结果进行欺骗,然后将JSON包装在回调函数中,将标题设置为
Access Control allow Origin:
,并将结果返回到AJAX JSONP脚本。很整洁,是吗

哦,给你:

<?php
// xss-service.php - Bare-bones demo by @Drakes
$callback = isset($_GET["callback"]) ? $_GET["callback"] : "?";

$json = file_get_contents('http://ec.europa.eu/semantic_webgate/query/sparql?dataset=rasff&format=json&limit=10&query=select%20?p%20where%20%20%7B%20?s%20?p%20?o%20%7D');

header('Access-Control-Allow-Origin: *');
header("Content-type: application/json");
echo $callback . "(" . $json . ");";
?>

演示:

要知道的是,json!=json要知道的是,json!=谢谢你的回复。我得到以下错误:
错误:jquery11209679192922043036_1428845360268未被调用
请查看我提出的链接。它展示了您的问题示例以及如何修复itSo。是否有任何方法可以从上述URL读取和处理JSON?它是您的URL吗?你能控制它吗?现在它没有响应
访问控制允许原点:
标题。。。不,这就是正确的JSONP响应的样子:谢谢您的响应。我得到以下错误:
错误:jquery11209679192922043036_1428845360268未被调用
请查看我提出的链接。它展示了您的问题示例以及如何修复itSo。是否有任何方法可以从上述URL读取和处理JSON?它是您的URL吗?你能控制它吗?现在它没有响应
访问控制允许原点:
标题。。。不,这就是正确的JSONP响应的样子: