I have a json file hosted on my server. When I try to make an Ajax "GET" request to the json file, it fails.
See the console in Safari, it says "Failed to load resource".
Firebug shows "200 OK", but the response doesn't show up. Even Firebug does not show the JSON tab.
I believe this is because Cross Domain Requests are not allowed using AJAX.
I would like to know how can I overcome this? Also, if I want to enable cross-domain requests on my server, I believe a crossdomain.xml
file or something needs to be created. I am not sure, but this is what I know. I searched on Google, but could not find any relevant links.
Any help in this is highly appreciated.
Thanks.
UPDATE: I am not using any server-side scripting language (PHP, ASP.NET, etc). I am using Plain HTML and JavaScript / jQuery.
UPDATE-2:
I used the following code to make cross-domain requests:
<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) {
开发者_JAVA百科 alert("success")
alert(jsonData);
},
error: function(errorObj) {
alert(errorObj.statusText);
},
});
});
When i see in Firebug's "Net" tab, I see a JSON tab, and I am able to see the json response. However, the "success" callback handler doesn't get called, but the "error" callback handler gets invoked and I get the alert saying parseerror
.
Any idea what could be wrong?
Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
on target server
in php:
header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
in case you don't want to use server-scripting language: put this in (linux) console
a2enmod headers
and to your .htaccess file add
Header set Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
Put this in your .htaccess and plain ajax works
<ifModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
</ifModule>
the solution given by genesis worked for me, however I had to omit the trailing slash on the url. ie:
header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
精彩评论