在其他函数之前运行javascript函数
我有以下代码:在其他函数之前运行javascript函数,javascript,function,Javascript,Function,我有以下代码: var is_recorded_book; function callback(data){ is_recorded_book = data.result alert(is_recorded_book) } function check_book(){ Dajaxice.darkoob.migration.is_book(callback, {'book_title': $('#id_book_title').val() }) alert ("check
var is_recorded_book;
function callback(data){
is_recorded_book = data.result
alert(is_recorded_book)
}
function check_book(){
Dajaxice.darkoob.migration.is_book(callback, {'book_title': $('#id_book_title').val() })
alert ("check book" +is_recorded_book);
if (is_recorded_book){
return true;
}else{
return false;
}
}
</script>
但是警报('dfsdf')不起作用。您需要在回调中执行警报:
Dajaxice.darkoob.migration.is_book(function (data) {
callback(data);
alert("check book" +is_recorded_book);
}, {'book_title': $('#id_book_title').val() });
这就是您的
支票簿的工作原理:
您发出一个异步http请求:这意味着发送请求并等待服务器响应
同时显示警报检查簿
,函数返回false,因为isRecorder\u book
仍然未定义
一段时间后,当服务器响应时,回调
运行并设置is\u recorder\u book
(太晚了)
有一些变通办法
使用synchronoushttp请求(在方法中将第三个参数设置为false
)
或者在设置is\u recorder\u book
第二个选项的代码:
var是记录的\u book=false;
函数回调(数据){
记录在案吗?记录簿=data.result;
警报(记录在记录簿上);
警报(“支票簿”+是记录簿);
document.getElementById(“yourform”).submit();
}
功能检查书(){
Dajaxice.darkoob.migration.is_book(
回调,{'book_title':$('id_book_title').val()}
);
}
按照代码的结构,您无法执行异步调用并取消表单提交。您必须更改逻辑。@28请尝试使用console.log()而不是alert,因为alert正在阻塞。
function check_book(){
Dajaxice.darkoob.migration.is_book(function(data){
callback(data);
alert('dfsdf')
if (is_recorded_book){
return true;
}else{
return false;
}
}, {'book_title': $('#id_book_title').val() })
}
Dajaxice.darkoob.migration.is_book(function (data) {
callback(data);
alert("check book" +is_recorded_book);
}, {'book_title': $('#id_book_title').val() });
var is_recorded_book = false;
function callback(data) {
is_recorded_book = data.result;
alert(is_recorded_book);
alert("check book" +is_recorded_book);
document.getElementById("yourform").submit();
}
function check_book(){
Dajaxice.darkoob.migration.is_book(
callback, {'book_title': $('#id_book_title').val() }
);
}
<form id="yourform" onsubmit="check_book(); return is_recorder_book;">