所以我有一个网页,它执行Ajax调用以从服务器获取数据。但是,当我触发Ajax调用时,我的网页上的输入框(本例中为#serial)停止响应(我无法在其上键入任何内容)。有谁知道是什么原因引起的?
<div id="filterconfig">
<b>Serial Number:</b> <br/><input type="text" id="serial"/> <br/>
<button type="button" onclick="clicked($('#serial').val(), $('[name=location]:checked').val(), $('#exception'), $('[name=direction]:checked').val(),$('[name=server]:checked').val())">Filter</button>
</div>
这是被调用的函数:
$(document).ready(assignOnclick);
function assignOnclick() {
$("tbody > tr").click(function () {
$(this).onclick = GetSelectedReadableForm(this);
});
}
function callAjax() {
var urlHuman = encodeURI(someUrl);
var urlHex = encodeURI(someUrl);
$.ajax({
url: urlHuman,
async:false,
cache: false,
success: function (data) {
$('#stringview').find('.human').val(data);
}
});
$.ajax({
url: urlHex,
async:false,
cache: false,
success: function (data) {
$('#stringview').find('.hex').val(data);
}
});
}
function GetSelectedReadableForm(obj) {
$("tr").css({ 'background-color': '' });
$(obj).closest('tr').css({ 'background-color': '#ccc' });
row_id = parseInt($(obj).closest('tr').find('#rowID').attr("value"));
callAjax();
}
答案 0 :(得分:1)
在jquery doc中:
async(默认值:true)类型:Boolean默认情况下,发送所有请求 异步(即默认设置为true)。如果你需要 同步请求,将此选项设置为false。跨域请求 和dataType:“jsonp”请求不支持同步操作。 请注意,同步请求可能会暂时锁定浏览器, 在请求处于活动状态时禁用任何操作。
你真的需要同步请求吗?!
您可以尝试将结果与同步请求同步:
$.when(
$.ajax({ url: urlHuman, cache: false}),
$.ajax({ url: urlHex, cache: false})
).done( function(data1, data2) {
$('#stringview').find('.human').val(data1);
$('#stringview').find('.hex').val(data2);
});
答案 1 :(得分:0)
问题是我将整个函数分配给“onkeydown”事件,并且它阻止了不适合它的按键上的默认行为