我有一段代码。从概念上讲,我理解发生了什么,但我不明白为什么它不起作用:
function Update(id,day,sid)
{
var sendMail;
form = $('Update_Appointment_'+day);
if($(id + '_Student_Appointment_' + sid) != null && $(id + '_Student_Appointment_' + sid).value != '')
$('Delete_Student_Appointment').value=$(id + '_Student_Appointment_' + sid).value;
else
$('Delete_Student_Appointment').value='';
form.action = 'appointment_popup.cfm?type=online&range_'+day+'=' + $F('Week_Select');
Set_ID(id,day,sid);
$q.ajax({
type: 'POST',
async: false,
url: 'cfc/email_appointment.cfc',
data: {
'method' : 'email_update',
'Appointment_ID': id,
'Consultant_ID': $q('[name="'+id+'_Consultant"]').val()
},
sucess: function(){
alert('Yay!');
},
error: function(){
alert('Boo!');
},
complete: function(){
alert('Complete!');
}
});
return sendMail;
}
最初,这段代码应该进行更新并提交一个有效的表单。我添加了一个部分,在更新之后,它将激活对CFC的AJAX调用,并且CFC将检查更新是什么以及如果需要更改电子邮件。
现在,我的问题是:如果我调用像Update(987, foo, 123456)
这样的函数,我可以让代码在控制台中工作。我还可以在Chrome的“网络”标签中看到正在完成的功能,状态代码为200.在这两个选项中,“完成!”警报箱也会发射。
以下是与调用该函数并从控制台调用该函数的浏览器的不同之处: 控制台将具有预览和响应数据,而浏览器将显示“此请求无法预览”和“此请求没有可用的响应数据”。 控制台将发送它应该发送的电子邮件,但浏览器不会。
我觉得我不了解AJAX调用的基本内容,但我不知道它会是什么。我只知道AJAX调用必须设置为async: false
,因为async: true
不起作用。
答案 0 :(得分:0)
并不是说你的ajax调用不能正常工作,因为它没有报告你想要的方式。
async : false
告诉ajax等待并“看到”结果是什么
async: true
基本上意味着触发ajax调用并继续浏览代码而不等待响应。