我正在测试一个本地主机上的JavaScript代码。该文件需要来自JSON格式的远程服务器的数据。当我直接点击JSON网址时,我得到的数据,但在JavaScript中,我得到空回应。
可能是什么原因?我正在使用jquery post方法来获取数据。
我正在测试一个本地主机上的JavaScript代码。该文件需要来自JSON格式的远程服务器的数据。当我直接点击JSON网址时,我得到的数据,但在JavaScript中,我得到空回应。
可能是什么原因?我正在使用jquery post方法来获取数据。
正如其他人所说,你不能使用AJAX来访问远程服务器。你必须使用JSONP。如果您没有控制其他服务器,或者如果其他服务器不提供JSONP,则必须使用代理。
在PHP中编写一个非常简单。 http://www.betavine.net/bvportal/blog/view.html?blogId=101&postId=ff8080811afe49d3011afe4bb5de0003
<?
ob_start();
$url = $_REQUEST['url'];
$curl_handle = curl_init($url);
curl_setopt($curl_handle, CURLOPT_HEADER, 0);
curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, "Owen's AJAX Proxy");
$content = curl_exec($curl_handle);
$content_type = curl_getinfo($curl_handle, CURLINFO_CONTENT_TYPE);
curl_close($curl_handle);
header("Content-Type: $content_type");
echo $content;
ob_flush();
?>
$.post
是一个ajax方法,您不能使用ajax方法来访问不同来源的数据。
由于浏览器的安全限制,大多数“Ajax”的请求都受到 的同源策略;该请求无法成功检索来自不同域,子域或协议的 数据。
有一个设置JavaScript的保护措施,你应该看看。这是相同的来源政策。基本上,这意味着如果您想为来自服务器的数据执行XmlHttpRequest,而这个服务器与您所在的页面不是同一个来源,那么除非您跳过这些环节,否则您不能这样做。
查看JSON-P或jQuery用于克服此问题的方法。
由于安全原因,您无法使用JavaScript访问来自不同域的任何资源。 jQuery无法为此做任何事情,但有一些方法可以实现这一点,如JSONP
或YQL
。
看看这个快速提示跨域AJAX
请求与YQL
。