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 呼び出しに関する基本的なことを理解していないように感じますが、それがどうなるかわかりません。機能しないasync: falseため、AJAX呼び出しをに設定する必要があることだけを知っています。async: true

4

1 に答える 1

0

あなたのajax呼び出しが機能していないということではなく、あなたが望むように報告していません。

async : falseajaxに待機して結果を「見る」ように指示しています

async: true基本的には、ajax 呼び出しを開始し、応答を待たずにコードを移動し続けることを意味します。

于 2013-08-21T22:09:48.067 に答える