这里有两个页面,test.php 和 testserver.php。
测试.php
<script src="scripts/jq.js" type="text/javascript"></script>
<script>
$(function() {
$.ajax({url:"testserver.php",
success:function() {
alert("Success");
},
error:function() {
alert("Error");
},
dataType:"json",
type:"get"
}
)})
</script>
测试服务器.php
<?php
$arr = array("element1",
"element2",
array("element31","element32"));
$arr['name'] = "response";
echo json_encode($arr);
?>
现在我的问题:当这两个文件都在同一个服务器上(本地主机或网络服务器)时,它可以工作并调用 alert("Success")
;如果它在不同的服务器上,意味着 web 服务器上的 testserver.php 和本地主机上的 test.php,它不工作,并且 alert("Error")
正在执行。即使AJAX里面的URL改成 http://domain.example/path/to/file/testserver.php
原文由 Firose Hussain 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 JSONP 。
jQuery:
PHP:
回声可能是错误的,我已经有一段时间没有使用 php 了。在任何情况下,您都需要输出
callbackName('jsonString')
注意引号。 jQuery 将传递它自己的回调名称,因此您需要从 GET 参数中获取它。正如 Stefan Kendall 所发布的, $.getJSON() 是一种速记方法,但是您需要附加
'callback=?'
到 url 作为 GET 参数(是的,值是?,jQuery 用它自己生成的回调方法替换它)。