0

以下は、私がコントローラーに対して行うjqueryajax呼び出しです。

jQuery.post('index.php',{
                'option'    : 'com_test',
                'controller': 'product',
                'task'      : 'loadColors',
                'format'    : 'raw',            
                'design_id' : design_id,
                    'collar_id' : collar_id                        
        },function(result){            
        }).success(function(result) { 
                alert(result); 
            }).error(function() { 
                jQuery('div#color_wrapper h1').text('ERROR WHILE LOADING COLORS');
            }).complete(function(result) { 
                alert(result); 
            });

私のコントローラーには以下のような機能があります。

function loadColors()
    {
        die;
    }

私の問題はdie、loadColors()で使用したことがあり、成功して完全な関数が実行されていることです。私が欲しいのは、loadColors()から何かを返すと実行される関数ですか?どうすればそれを行うことができますか?

4

4 に答える 4

2

投稿が成功を返したときにのみ呼び出されるため、実行する.success()場合は不要です。$.postfunction(results)

jQuery.post('index.php',{
               'option'    : 'com_test',
               'controller': 'product',
               'task'      : 'loadColors',
              'format'    : 'raw',            
               'design_id' : design_id,
                  'collar_id' : collar_id                        
       },function(result){            

          alert(result);
       });

あなたが遊んでみたいものです。

于 2012-11-08T08:17:50.393 に答える
1

私は個人的にコールバックが何であるかをチェックし、次にあなたが何をしたいかを決めるでしょう。

.success(function(result) { 
    if (result == "") {
        alert("empty result!");
    } else {
        alert("non empty result! " + result);
    }
})

例えば。

PHPスクリプトを介して成功関数を実行させたくない場合は、他のヘッダーをチェックして、死ぬ前に返す必要があります。これまで使用したことがないので、それが機能するかどうかは完全にはわかりませんが、ページにエラーがあることを示すヘッダーを送信できます。

于 2012-11-08T08:18:40.493 に答える
1

呼び出しで何も問題がなかったため、関数successとcompleteが呼び出されます。あなたはただ何も返さない。エラー関数は、それ自体の呼び出しで何かがうまくいかなかった場合に呼び出されます(つまり、タイムアウトまたはステータスコード!= 200)。

成功関数でチェックを行う必要があります。

...
success(function (result) {
    if (!result) {
        alert('Error');
        return;
    }

    // do the right stuff

})
于 2012-11-08T08:19:24.470 に答える
1

クライアントのコードでハンドラーをトリガーする場合errorは、クエリがエラーコード(、、など)で返されるようにする必要があり404 Page not foundます500 Internal server error

サーバー側でphpを使用すると、次のheader関数を使用できます。

function loadColors()
{
    header('HTTP/1.1 500 Internal Server Error');
    die;
}
于 2012-11-08T08:41:43.667 に答える