PHP,jQuery Ajax和json返回跨域
我在一台服务器上有我的PHP编码页面,返回一个json结果。 php文件名为:getInfoData.php,返回如下。
echo json_encode($v);
不,我可以使用$ .getJSON(??)来读取json并在相同的服务器上运行它,但我需要将php页面放在与调用它的js页面不同的服务器上。
但是当我这样做时,我得到了跨域问题。
所以我更改了代码以使用以下(jsonp):
$.ajax({ url: 'FILE_LOCATION_ON_ANOTHER_SERVER', type: 'GET', crossDomain: true, dataType: 'jsonp', success: function() { console.log("Success"); }, error: function() {console.log('Failed!'); } });
但我没有看到任何东西我只是通过我的控制台得到以下内容:
http://www.THEURL.com/FOLDER/FILENAME.php?callback=jQuery171013088115444406867_1332256223342&_=1332256223343
和一条消息说失败了!
我做错了什么,如果能解决这个问题怎么办?
谢谢
JSONP实际上不是JSON。 这有点像“黑客”。 JSONP实际上是一个JavaScript文件,可以下载并运行。
在PHP页面中,您应该传递一个callback
参数。 你需要在其中“包装”你的JSON。 它应该如下所示:
func({json: data})
所以,你的PHP应该是这样的:
echo $_GET['callback'] . '(' . json_encode($v) . ')';
我经常使用它,但也许有更好的方法
因为我看到你提供了一个回调参数,一切都应该没问题