这是两个页面,test.php和testserver.php。
test.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>
testserver.php
<?php
$arr = array("element1",
"element2",
array("element31","element32"));
$arr['name'] = "response";
echo json_encode($arr);
?>
现在我的问题是:当这两个文件都在同一服务器上(本地主机或Web服务器)时,它可以工作并被alert("Success")
调用;如果它在不同的服务器上,则意味着Web服务器上的testserver.php和localhost上的test.php,它不起作用,并且alert("Error")
正在执行。即使ajax内的URL更改为http://domain.com/path/to/file/testserver.php
对于Microsoft Azure,它略有不同。
Azure具有需要设置的特殊CORS设置。幕后本质上是相同的,但是仅设置标题joshuarh提及将不起作用。可以在此处找到用于启用跨域的Azure文档:
https://docs.microsoft.com/zh-CN/azure/app-service-api/app-service-api-cors-consume-javascript
我花了几个小时弄弄这个,然后才意识到我的托管平台具有这种特殊的设置。