jquery .ajax()请求在第一次尝试时不返回任何内容。只有再次触发相同的功能才会返回正确的数据。
以下是我用来解决问题的代码(原因尚不清楚):
$(document).ready(function(){
$(window).load(function(){
$('input').change(function() {
$('#b').removeClass("valid");
if ($('#b').val()) {
bajax(false);
}
}
function bajax(e) {
$.ajax({
type: "GET",
dataType: 'text',
data: 'i='+$('#b').val(),
cache: false,
url: 'b.php',
success: function(data){
$('#b').val(data);
$('#b').addClass("valid");
},
error: function() {
if (!e) {
bajax(true);
} else {
$('#b').val("An error occured.");
$('#b').removeClass("valid");
}
}
});
});
});
});
#b
是一个简单的<input>
,b.php
输出一个短字符串。我正在使用echo "123";
进行测试,正如我所说的那样,除了我必须两次触发此请求才能显示文本。
编辑: console.log输出:
[16:47:54.893] "Running..."
[16:47:55.096] GET b.php?i=19&_=1388245674895 [0ms]
[16:47:55.583] "Call to error function"
[16:47:59.595] GET b.php?i=19&_=1388245679534 [0ms]
[16:47:59.533] "Running..."
[16:48:00.025] "Came into the success function with" "123"