我有这段代码:
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>
并且有一个这样的表格:
<form action="..." method='...' onsubmit='return check_book()'>
...
<input type='submit' />
但我的输出是: alert(“check book”+ is_recorded_book); alert(is_recorded_book)
但我想首先运行alert(is_recorded_book)
。
我将check_book函数编辑为:
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() })
}
但警报('dfsdf')不起作用。
答案 0 :(得分:2)
您需要在回调中执行警报:
Dajaxice.darkoob.migration.is_book(function (data) {
callback(data);
alert("check book" +is_recorded_book);
}, {'book_title': $('#id_book_title').val() });
答案 1 :(得分:0)
这就是check_book
的工作原理:
alert check_book
并且函数返回false,因为isRecorder_book
仍未定义callback
会运行并设置is_recorder_book
(太晚了)有一些解决方法
使用同步 http请求(在open方法中将第三个参数设置为false
。
或者在设置is_recorder_book
第二个选项的代码:
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;">