这是我的脚本的一部分,它打印9然后98但无法打印2它表示没有调用jQuery中的回调函数。但是在此之前我使用json_decode函数打印从php文件返回的json,并且json打印得非常好。我怎样才能调试它,我的意思是哪里可能是错误?
$(document).ready( function() {
alert(9);
$('#charac').keyup( function() {
alert(98);
$.getJSON('myprg.php?q='+escape($('#charac').val()), function(data) {
alert(2);
答案 0 :(得分:5)
使用$.ajax
函数代替getJSON
并使用错误回调查看正在发生的事情。
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
error: callback(jqXHR, textStatus, errorThrown)
});
使用Firebug或Chrome开发人员工具检查实际服务器响应并使用JSONLint验证JSON也很有用,某些JSON库比其他JSON库更宽容并忽略小错误。
答案 1 :(得分:1)
这可能不是一个答案,但代码在这里可以更好地显示。
以下是否也失败(使用jQuery 1.5或更高版本)?
$(document).ready( function() {
alert(9);
$('#charac').keyup( function() {
alert(98);
var jqxhr = $.getJSON('myprg.php?q='+escape($('#charac').val()), function(data) {
alert(2);
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
});
});
或者这个:
$(document).ready( function() {
alert(9);
$('#charac').keyup( function() {
alert(98);
var jqxhr = $.getJSON('myprg.php?q='+escape($('#charac').val()), function(data) {
alert(2);
});
jqxhr.success(function() { alert("second success"); });
jqxhr.error(function() { alert("error"); });
jqxhr.complete(function() { alert("complete"); });
});
});