0

我有一段代码。从概念上讲,我了解发生了什么,但我不明白为什么它不起作用:

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不起作用。

4

1 回答 1

0

并不是您的 ajax 调用不起作用,而是它没有按照想要的方式报告。

async : false告诉 ajax 等待并“查看”结果是什么

async: true基本上意味着关闭 ajax 调用并继续通过代码而不等待响应。

于 2013-08-21T22:09:48.067 回答