我想调用ASP.Net CMS上的PHP函数。我在不同的域上托管PHP文件,并且出现以下错误。访问控制起源错误
XMLHttpRequest无法加载网址。原始网址不被Access-Control-Allow-Origin所允许。
我已添加标题('Access-Control-Allow-Origin:*');根据本网站上其他主题中的一些建议转换为PHP文件,但对我而言并没有什么不同。
这里是我的代码:
HTML
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.post('http://10.254.2.54/adobe%20air/application/Pulse/data.php', {
'text': $("#preceda").text()
},
function(response){
$("#details").html(response);
});
});
</script>
</head>
<body>
<div id="preceda">
32384
</div>
<br />
<div id="details"></div>
</body>
</html>
PHP
<?php
header('Access-Control-Allow-Origin: *');
if (isset($_POST['text'])){
$q = addslashes(trim($_POST['text']));
}
// Connection script
$serverName = "***";
$uid = "***";
$pwd = "***";
$connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>"***");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn === false)
{
echo "<error>Connect Failure</error>";
die(print_r(sqlsrv_errors(), true));
}
function checkQuery($theQuery, $theSQL)
{
if($theQuery === false)
{
echo "<error>Query Failure: ".$theSQL."</error>";
die(print_r(sqlsrv_errors(), true));
}
}
// Get the data
$tsql = "SELECT * FROM VG_LD_DS.dbo.VU_LearnAchievePreceda WHERE userID = '".$q."'";
$stmt = sqlsrv_query($conn, $tsql);
checkQuery($stmt, $tsql);
$i = 0;
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
if($i == 0)
{
$names = array($row);
}
else
{
array_push($names, $row);
}
$i = 1;
}
header('Access-Control-Allow-Origin: *');
foreach ($names as $name) {
echo $name['telstraID'];
}
?>
这东西是相当新的给我,所以任何意见或建议被赞赏。
谢谢:)
无法看到任何代码会导致同源违规......您确定您的ajax请求没有在某个地方被重定向到异地吗? –
是的,这很抱歉,我想我的代码并不清楚。data.php被托管在具有ajax请求的页面的不同内部服务器上。 – user1443449
这可以使用JSONP或'CURL' – diEcho