Jquery 使用jsonp对本地主机php的Ajax请求不起作用
您好,我正在使用Jquery调用php脚本。php脚本位于Jquery 使用jsonp对本地主机php的Ajax请求不起作用,jquery,mysql,ajax,jsonp,Jquery,Mysql,Ajax,Jsonp,您好,我正在使用Jquery调用php脚本。php脚本位于http://localhost:8080/getData.php并访问MySql数据库 我在我的pc上使用tomcat服务器设置,服务器地址为localhost:8080 我已经查看了ajax响应data.status,它是0 我已经阅读了有关跨域请求的内容,并且知道如果我使用JSONp,这应该不会是一个问题 任何帮助都将不胜感激 我用来调用ajax函数的HTML中的jquery部分如下: <script type="text/j
http://localhost:8080/getData.php
并访问MySql数据库
我在我的pc上使用tomcat服务器设置,服务器地址为localhost:8080
我已经查看了ajax响应data.status,它是0
我已经阅读了有关跨域请求的内容,并且知道如果我使用JSONp,这应该不会是一个问题
任何帮助都将不胜感激
我用来调用ajax函数的HTML中的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>
<?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) . ');';
?>
$(文档).ready(函数(){
$.ajax({
类型:'GET',
网址:'http://localhost/getData.php',
数据类型:'jsonp',
超时:5000,
成功:功能(数据){
//数据加载
警报(“已加载”);
},
错误:函数(数据){
//加载数据时出错
警报(“错误”);
}
});
});
实际的getData.php代码如下:
<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>
<?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) . ');';
?>
我看到了三个问题:
jsoncallback
的GET参数,但这不是jQuery默认发送的名称,即callback
。将PHP更改为使用回调
:
// Here ----v
echo $_GET['callback'] . '(' . json_encode($records) . ');';
jsonp: "jsoncallback",
…或将此选项添加到调用中,以告知jQuery改用jsoncallback
:
// Here ----v
echo $_GET['callback'] . '(' . json_encode($records) . ');';
jsonp: "jsoncallback",
您可以使用浏览器开发工具中的“网络”选项卡来检查调用,并查看查询字符串的外观,以确保它们匹配datatype:'jsonp'
而不是datatype:'jsonp'
(datatype
中的T
必须是大写),因此jQuery根本不会尝试执行JSON-p调用,它将尝试使用XHRhttp://localhost:8080/getData.php
,但是您给jQuery的url
是http://localhost/getData.php
(不带端口)我看到三个问题:
jsoncallback
的GET参数,但这不是jQuery默认发送的名称,即callback
。将PHP更改为使用回调
:
// Here ----v
echo $_GET['callback'] . '(' . json_encode($records) . ');';
jsonp: "jsoncallback",
…或将此选项添加到调用中,以告知jQuery改用jsoncallback
:
// Here ----v
echo $_GET['callback'] . '(' . json_encode($records) . ');';
jsonp: "jsoncallback",
您可以使用浏览器开发工具中的“网络”选项卡来检查调用,并查看查询字符串的外观,以确保它们匹配datatype:'jsonp'
而不是datatype:'jsonp'
(datatype
中的T
必须是大写),因此jQuery根本不会尝试执行JSON-p调用,它将尝试使用XHRhttp://localhost:8080/getData.php
,但是您给jQuery的url
是http://localhost/getData.php
(不带端口)嗨,T.J.克劳德,今天晚些时候我回家后,我会试着试一试。我是个新手,你有没有做过类似的事情?如果有,您知道web上有任何链接/教程吗?非常感谢您的回复。@user1907509:我不知道有什么具体的链接/教程,但web上并不缺少jQuery/JSON-P示例。:-)我注意到您的呼叫中还有一些其他问题,并更新了答案,希望能有所帮助。T.J Crowder我已经尝试过,并且能够从php获得响应,但响应只是php的实际源代码,而不是预期的JSON数据。也许我在php方面做错了什么。php脚本看起来正确吗?@user1907509:听起来您的web服务器上的php配置不正确。@user1907509:太好了!很高兴这有帮助。最好的,嗨,T.J.克劳德,我今天晚些时候回家的时候会试着试一试。我是个新手,你有没有做过类似的事情?如果有,您知道web上有任何链接/教程吗?非常感谢您的回复。@user1907509:我不知道有什么具体的链接/教程,但web上并不缺少jQuery/JSON-P示例。:-)我注意到您的呼叫中还有一些其他问题,并更新了答案,希望能有所帮助。T.J Crowder我已经尝试过,并且能够从php获得响应,但响应只是php的实际源代码,而不是预期的JSON数据。也许我在php方面做错了什么。php脚本看起来正确吗?@user1907509:听起来您的web服务器上的php配置不正确。@user1907509:太好了!很高兴这有帮助。最好的,