Mah*_*iya 20 ajax jquery json cross-domain
我的服务器上托管了一个json文件.当我尝试向json文件发出Ajax"GET"请求时,它失败了.
在Safari中查看控制台,它说"无法加载资源".
Firebug显示"200 OK",但响应没有显示出来.甚至Firebug也没有显示JSON选项卡.
我相信这是因为使用AJAX不允许跨域请求.
我想知道如何克服这个问题?此外,如果我想在我的服务器上启用跨域请求,我相信crossdomain.xml需要创建一个文件或其他东西.我不确定,但这就是我所知道的.我在Google上搜索过,但找不到任何相关链接.
任何帮助都非常感谢.
谢谢.
更新: 我没有使用任何服务器端脚本语言(PHP,ASP.NET等).我使用的是纯HTML和JavaScript/jQuery.
更新2:
我使用以下代码来制作跨域请求:
<script src="jquery-1.6.2.js"></script>
<script>
$(document).ready(function () {
$.ajax({
dataType: 'jsonp',
data: '',
jsonp: 'jsonp_callback',
url: 'http://myhosting.net/myjsonfile.json',
success: function (jsonData) {
alert("success")
alert(jsonData);
},
error: function(errorObj) {
alert(errorObj.statusText);
},
});
});
Run Code Online (Sandbox Code Playgroud)
当我在Firebug的"Net"选项卡中看到时,我看到一个JSON选项卡,我能够看到json响应.但是,"success"回调处理程序不会被调用,但是"错误"回调处理程序被调用,我得到警告说parseerror.
知道什么可能是错的吗?
gen*_*sis 39
Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
Run Code Online (Sandbox Code Playgroud)
在目标服务器上
在PHP中:
header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
Run Code Online (Sandbox Code Playgroud)
如果你不想使用服务器脚本语言:把它放在(linux)控制台
a2enmod headers
Run Code Online (Sandbox Code Playgroud)
和你的.htaccess文件添加
Header set Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
Run Code Online (Sandbox Code Playgroud)
把它放在你的.htaccess和简单的ajax中
<ifModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
</ifModule>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76792 次 |
| 最近记录: |