一連のUIコンポーネントのマウスクリックイベントを一連のページで追跡したいと思います。これを行うには、次のjquery/ajax呼び出しを使用しています(uをトリミングしたもの):jquery ajax投稿がキャンセルされました
1.Ajaxコールはクリックロギングを追加します。 AJAXロガーを呼び出す
myClickLogger = {
endpoint: '/path/to/my/logging/endpoint.html',
logClickEvent: function(clickCode) {
$.ajax({
'type': 'POST',
'url': this.endpoint,
'async': true,
'cache': false,
'global': false,
'data': {
'clickCode':clickCode
},
'error': function(xhr,status,err){
alert("DEBUG: status"+status+" \nError:"+err);
},
'success': function(data){
if(data.status!=200){
alert("Error occured!");
}
}
});
}
};
2.JQueryクリックイベントは、(clickCodeボタン/画像がクリックされた識別子である):(1)
$(document).ready(function() {
$(".myClickEvent[clickName]").click(function() {
var clickCode = $(this).attr("clickName");
myClickLogger.logClickEvent(clickCode);
});
});
上記AJAX呼び出しです "ボタンクリックが追跡されるたびにブラウザーによって新しいページに移動されます。
'aysnc'を 'false'に変更すると、ajax呼び出しが成功します。
また、新しいページに成功しないクリックイベントも成功します。新しいページに移動したクリックイベントのみがキャンセルされます。
コールを同期させたくありません。
何か問題がありますか?クリックイベントが新しいページに移動したときに、前に非同期呼び出しが完了したことをどうすれば保証できますか?
あなたは同期呼び出しを使用する必要があり、そうでない場合はフォームが送信され、ユーザーが新しいページが表示されます。フォームが送信されると、ページがアンロードされ、AJAXの呼び出しがキャンセルされます。ブラウザがどのように動作するのでしょうか? – Ian
ajaxコールで使用している単一引用符について教えてください。一重引用符は '' type''または '' success''であり、すべて引用符なしで使用されているためです。 –
同期呼び出しを使用する必要はありません。非同期呼び出しが終了するまで実行されません。 –