我想提交表格并显示有关结果的信息。
update_records
将alert_message
初始化为错误消息。
如果成功,我希望它的价值改变。
比update_records
输出消息。
但该功能始终警告“提交表单错误”。
这有什么问题?
代码如下:
function update_records(form_name) {
var options = {
async: false,
alert_message: "Error submitting form",
success: function(message) {
this.alert_message = message;
}
};
$('#' + form_name).ajaxSubmit(options);
alert(options.alert_message);
}
我是Javascript / JSon / Jquery的新手,我怀疑我误解了所提及技术的一些基础知识。
更新
我指定"async:false"
使执行同步(是否正确?)
我还尝试在以下两行之间插入延迟:
$('#' + form_name).ajaxSubmit(options);
pausecomp(1000); // inserted pause
alert(options.alert_message);
它也无法解决问题。
pousecomp
的代码如下:
function pausecomp(millis)
{
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < millis);
}
答案 0 :(得分:0)
ajaxSubmit的AJAX调用是异步的 - 这意味着AJAX请求是通常的程序执行乱序,并且在你的程序中意味着在this.alert_message = message;
有机会执行之前调用警报。执行顺序是:
update_records()
alert(options.alert_message)
this.alert_message
变量)要让警报显示正确的值,请将使用AJAX返回数据的代码(alert()
)移动到success()
函数 - 即成功函数的用途。
答案 1 :(得分:0)
$('#' + form_name).ajaxSubmit(options);
由于AJAX的首字母缩略词表明此调用是异步的,因此您alert(options.alert_message);
在调用成功回调之前调用,这就是为什么你总是得到一个带有错误消息的警报,虽然ajax调用可能成功完成你可以尝试这样的事情:
function update_records(form_name) {
var options = {
async: false,
alert_message: "Error submitting form",
success: function(message) {
alert(message);
},
error : function(){
alert(this.alert_message);
}
};
$('#' + form_name).ajaxSubmit(options);
}