AJAXボタンがあるフォームがあります。クリックすると、期待通りに大量のものが更新されます。
AJAX呼び出しが完了したときに呼び出される動作でリスナーを作成する方法があるかどうか疑問に思っていましたか?
ありがとう
AJAXボタンがあるフォームがあります。クリックすると、期待通りに大量のものが更新されます。
AJAX呼び出しが完了したときに呼び出される動作でリスナーを作成する方法があるかどうか疑問に思っていましたか?
ありがとう
回答:
はいあります :
Drupal.behaviors.YourBehaviour = {
attach: function(context, settings) {
$('#yourform').ajaxComplete(function(event, xhr, settings) {
if ($(event.target.id) == 'the-id-of-your-item') {
// Your code here
}
});
}
}
jQuery 1.8+のバージョンでは、フォームまたはビュー自体ではなく、ドキュメントに.ajaxComplete関数を添付する必要があるようです(http://api.jquery.com/ajaxcomplete/を参照)
次は、D7でJquery 1.10とViews 7.x-3.8で機能しました。ここで、「your_view_id」は、ビューの「その他」設定パネルで設定されたビューのマシン名です。イベント、xhr、およびキーオフする設定には他にも多くの情報があり、ajaxの結果が目的のビューのものかどうかを判断しますが、これは私の状況ではうまくいきました:
jQuery(document).ajaxComplete(function(event, xhr, settings) {
if(typeof settings.extraData != 'undefined' && typeof settings.extraData.view_display_id != 'undefined') {
switch(settings.extraData.view_display_id){
case "your_view_id":
console.log('your_view_id ajax results!');
break;
default:
console.log('some other ajax result...');
break;
}
}
});
与えられたソリューションはどれもDrupal 7.24、jQuery 1.11、Views 7.x-3.8 ではうまくいきませんでした。
何user1193694提案することは悪くはなかったが、私が受信した設定オブジェクトがありませんでした extraDataのパラメータを。
設定オブジェクトを解析するとき、settings.dataプロパティに「view_name =」とビューのマシン名が含まれていることがわかりました。
jQuery(document).ajaxComplete(function(event, xhr, settings) {
// see if it is from our view
if (settings.data.indexOf( "view_name=your_views_name") != -1) {
console.log('your_view_id ajax results!');
}
});
' your_views_name 'をビューのマシン名に置き換えます。
Drupal.behaviors.YourBehaviour = { attach: function() { $('#yourform').ajaxComplete...