我有一个错误抛出说明"发出请求时发生错误:SyntaxError:意外的输入结束"经过一些研究后,我发现存在语法错误。我无法找到语法错误,需要一双新眼睛。有谁能看到它?
jQuery代码:
$('#searchTable tr').click(function(){
var parcel_id = $(this).attr('id');
$.ajax({
url: "classes/get-apn.php?parcel_id=" + parcel_id,
//timeout: 30000,
type: "GET",
data: { parcel_id : 'parcel_id' },
dataType: 'json',
error: function(SMLHttpRequest, textStatus, errorThrown){
alert("An error has occurred making the request: " + errorThrown)
},
success: function(data){
//do stuff here on success
alert('<?php echo $data; ?>');
}
});
});
PHP代码:
<?php
header("content-type:application/json");
require('db-connections.php');
$i = isset($_GET['parcel_id']) ? $_GET['parcel_id']: null;
class Apn {
public function GetApn () {
$db = new ezSQL_mysql(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
$sql = "select apn from lcv where id=" . $i;
$data = $db->query($sql);
print_r($data);//print data for checking
}
}
?>
答案 0 :(得分:1)
您的php脚本以header("content-type:application/json");
开头,最后使用print_r
,而且它不是有效的json。
你应该在php代码中使用echo json_encode($data);
。如果你仍然有同样的错误,这可能是由一个可以“破坏”有效json格式的php警告/通知引起的。
编辑:更多解释。
php代码是正确的,但问题是jquery期望与php输出的对比:
dataType: 'json'
选项中的$.ajax
)。header("content-type:application/json")
发送json,但生成print_r
输出,这不是有效的json格式。因此,ajax.success函数无法处理php发出的数据,而是使用ajax.error来处理错误。
答案 1 :(得分:0)
尝试:
data: { parcel_id : parcel_id }
答案 2 :(得分:0)
您将parcel_id
发布为纯字符串而非变量。
将其更改为:
data: { parcel_id : parcel_id }
另外,
在php文件中
使用json_encode
答案 3 :(得分:-1)
Google告诉我这是一个JavaScript错误,第10行缺少分号:
alert("An error has occurred making the request: " + errorThrown)
您可以使用Google,jshint和Zend Studio解决此问题。
编辑DOUBTERS,以下是网站上的文字:
Metrics
There are 3 functions in this file.
Function with the largest signature take 3 arguments, while the median is 1.
Largest function has 2 statements in it, while the median is 1.
The most complex function has a cyclomatic complexity value of 1 while the median is 1.
One warning
10 Missing semicolon.
One undefined variable
1 $
2 $
3 $
Three unused variables
9 textStatus
9 SMLHttpRequest
12 data
JSHint
About
Documentation
Install
Hack
Blog
1
$('#searchTable tr').click(function(){
2
var parcel_id = $(this).attr('id');
3
$.ajax({
4
url: "classes/get-apn.php?parcel_id=" + parcel_id,
5
//timeout: 30000,
6
type: "GET",
7
data: { parcel_id : 'parcel_id' },
8
dataType: 'json',
9
error: function(SMLHttpRequest, textStatus, errorThrown){
10
alert("An error has occurred making the request: " + errorThrown)
11
},
12
success: function(data){
13
//do stuff here on success
14
alert('<?php echo $data; ?>');
15
}
16
});
17
});