1

次のようないくつかの要素に接続された .ajaxComplete イベントがあります。

$("#ElementId").ajaxComplete(function (a, b, c) { });

$.ajax問題は、さまざまな関数によって呼び出されるスクリプトに複数の呼び出しがあることです。すべての ajax 呼び出しのすべてのコントロールに対して .ajaxComplete イベントを発生させたくありません。概念的には、次のようなものを探しています。

if (a.function == SearchCustomers) { do this }

ここで私が望むものを達成する方法はありますか?

編集: 呼び出しているサービスの URL を確認できることはわかっていますが、スクリプトで URL 文字列を複数回ハードコーディングしたくありません。

4

4 に答える 4

3

このようにする必要があります:

$.ajax({
    url: "servicecall.html",
    success: function(html){
        //if success
    };
});
于 2012-10-19T14:27:41.393 に答える
2

個人的には、さまざまな理由から、モジュールを JS オブジェクトで編成し、Ajax 呼び出しを関数に抽象化するよりも好きです。

​var YourModule = {
    Ajax: {        
        AjaxCallOne: function()
        {
            return $.ajax({
                // your options for the call    
            }).promise();
        },
        AjaxCallTwo: function()
        {
            return $.ajax({
                // your options for the call    
            }).promise();
        }
    },
    Events: {
        OnButtonOneClick: function()
        {
            YourModule.Ajax.AjaxCallOne().then(YourModule.Events.OnAjaxCallOneReceived);
        },
        OnButtonOneClick: function()
        {
            YourModule.Ajax.AjaxCallTwo().then(YourModule.Events.OnAjaxCallTwoReceived);
        },
        OnAjaxCallOneReceived:function(data)
        {
            // your code            
        },
        OnAjaxCallTwoReceived: function(data)
        {
            // your code    
        }
    }            
};​​​

$.ajax は Deferred の「インターフェース」を実装しているため、.then() は機能しています。このリファレンスを参照してください: http://api.jquery.com/category/deferred-object/

また、$.ajax 呼び出しに渡されるオプションをコード ユーザーが変更できるようにすることも検討してください。これには、$.extend を使用します。このリファレンスを参照してください: http://api.jquery.com/jQuery.extend/

于 2012-10-19T14:28:06.573 に答える
1

Ajax コール 1:

$.ajax({
    // set all your properties as needed
    url: myUrl,
    success: function(data) {
        // handle the result from THIS .ajax call
    }
});

Ajax コール 2:

$.ajax({
    // set all your properties as needed
    url: myotherURL,
    success: function(data) {
        // handle the result from THIS .ajax call
    }
});

同じことを行う必要がある多数の .ajax 呼び出しがある場合は、$.ajaxSetup を使用してデフォルトの成功関数を設定できます。

于 2012-10-19T14:29:56.627 に答える