hi am am am hi am am am am am hi am hi am the jquery调用php脚本。PHP脚本位于http://localhost:8080/getData.php
,访问MySQL数据库。
我在PC上使用Localhost的服务器地址:8080
在PC上使用Tomcat服务器设置我已经查看了ajax响应data.status,它是0
我已经阅读了有关跨域请求的信息,并且知道如果我使用JSONP,这应该不是问题。
任何帮助都将不胜感激。
我用来调用AJAX函数的jQuery部分如下:
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type:'GET',
url:'http://localhost/getData.php',
datatype:'jsonp',
timeout: 5000,
success: function(data){
//data loaded
alert('loaded');
},
error: function(data){
// error on loading data
alert('error');
}
});
});
</script>
实际getData.php代码如下:
<?php
header('Content-type: application/json');
$server = "127.0.0.1";
$username = "root";
$password = "";
$database = "deals";
$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);
$sql = "SELECT area_id, name AS area_name, sector AS area_sector FROM deals.areas ORDER BY name";
$result = mysql_query($sql) or die ("Query error: " . mysql_error());
$records = array();
while($row = mysql_fetch_assoc($result)) {
$records[] = $row;
}
mysql_close($con);
echo $_GET['jsoncallback'] . '(' . json_encode($records) . ');';
?>
我看到了三个问题:
-
您的PHP脚本正在寻找称为
jsoncallback
的GET参数,但这不是JQuery默认发送的名称,即callback
。更改PHP以使用callback
:// Here ----v echo $_GET['callback'] . '(' . json_encode($records) . ');';
...或将此选项添加到您的
ajax
调用中,以告诉JQuery使用jsoncallback
:jsonp: "jsoncallback",
您可以在浏览器的开发工具中使用"网络"选项卡来检查呼叫并查看查询字符串的外观,以确保它们匹配。
-
您的AJAX选项中有一个错别字,您的
datatype:'jsonp'
而不是dataType:'jsonp'
(dataType
中的T
必须是较高的情况),因此jQuery不会试图完全尝试进行JSON-P调用,它将尝试xhr。 -
您在问题中说,PHP页面在
http://localhost:8080/getData.php
,但是url
您给定的JQuery是http://localhost/getData.php
(没有端口)。