我正在尝试使用jquery的ajax方法连接到位于http://127.0.0.1:8080/projects/mssql/index.php的php文件,但我无法得到响应。我做错了什么?
我正在做所有这些本地 - 我是否必须更改php.ini文件中的任何设置或代码中是否有错误?请帮忙
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
alert("hoi");
$.ajax({url: "http://127.0.0.1:8080/projects/mssql/index.php", async: false, success: function(result){
$("div").html(result);
}});
});
});
</script>
</head>
<body>
<div><h2>Let AJAX change this text</h2></div>
<button>Change Content</button>
</body>
</html>
这是php文件。 php文件本身有效,因为当我在浏览器中输入它的位置时,我确实得到了预期的响应
<?php
$serverName = "PAUL\SQLSERVER";
$connectionInfo=$arrayName = array('Database' => "TestDatabase" );
$conn = sqlsrv_connect($serverName,$connectionInfo);
if($conn){
echo "connection established";
}
else{
echo "connection failure";
die(print_r(sqlsrv_errors(),TRUE));
}
$sql="select custID from customer";
$stmt = sqlsrv_query($conn,$sql);
if($stmt == false){
echo "Error retriving data";
die(print_r(sqlsrv_errors(),TRUE));
}
echo "<br>";
$row = sqlsrv_fetch_array($stmt);
echo $row["custID"];
?>
答案 0 :(得分:1)
由于跨域原始政策,您无法拨打此电话。请查看以下链接以了解更多信息。
http://en.wikipedia.org/wiki/Same-origin_policy
您需要在同一个域上进行AJAX调用。但在您的情况下,您正在通过浏览直接HTML文件进行呼叫。
从该页面添加一些注释:
在计算中,同源策略是一个重要的概念 Web应用程序安全模型。根据该政策,Web浏览器 允许第一个网页中包含的脚本访问a中的数据 第二个网页,但仅当两个网页具有相同的来源时。一个 origin被定义为URI方案,主机名和端口的组合 1号]此策略可防止一页上的恶意脚本 通过它访问另一个网页上的敏感数据 页面的文档对象模型。
作为解决方案,您可以使用 jsonp 进行跨源AJAX调用:https://learn.jquery.com/ajax/working-with-jsonp/