1

多くのJQUERYAJAX呼び出しを行う必要がありますが、AJAX呼び出しコードを絶えず繰り返したくありません。したがって、私は次のようにAJAX関数を設定しようとしました。

function ajaxCall(ajaxData) {
    $.post('scripts/ajax/connect.ajax.php', {
        ajaxData
    }, function(ajaxReturn) {
        if (ajaxReturn == 'deadSession') {
            location.reload();
        } else {
            return ajaxReturn;
        }
    });
}​

ただし、上記のコードは、AJAX呼び出しの{ajaxData}変数のために機能しません。次のコードは機能します。

function ajaxCall(ajaxData) {
    $.post('scripts/ajax/connect.ajax.php', {
        'googleMetaSave': '1'
    }, function(ajaxReturn) {
        if (ajaxReturn == 'deadSession') {
            location.reload();
        } else {
            return ajaxReturn;
        }
    });
}​

必要に応じてセットアップされ、この関数に渡されるAJAX呼び出しで変数を使用する方法についてアドバイスはありますか?

4

2 に答える 2

0

ajaxDataの周りの{}を削除します。

   function ajaxCall(ajaxData) {
    $.post('scripts/ajax/connect.ajax.php', ajaxData, function(ajaxReturn) {if(ajaxReturn == 'deadSession') {location.reload();}else{return ajaxReturn;}});           

}
于 2012-05-26T08:45:57.993 に答える
0

jQuery POSTメソッドの2番目のパラメーターは、で区切られた一連のキーと値のペアを表す文字列であるか、&一連のキーと値のペアを含むマップである必要があります。

JavaScriptは緩く型付けされているため、関数に大きな影響を与えることはありません。

{}変数ajaxDataはサーバーに渡されるオブジェクトを表すため、オブジェクトを渡す場合は冗長であり、文字列を渡す場合は構文的に正しくないため、その周りに余分なものは必要ありません。

まず、コールバック関数のロジックの問題に対処しましょう。AJAXは非同期であるため、コールバック関数が起動する前に関数の実行が完了します。代わりに、return ajaxReturnステートメントはコールバック関数自体に値を返します。これは、データがどこにも行かないことを意味します。

データを処理できる場所に取得するには、コールバックがそのデータをハンドオフとして別の関数に渡す必要があります。私はあなたのコードを変更しまし{ }た。ajaxReturnパラメーターの周りの不要な誤ったものを削除するだけでなく、returnステートメントを削除しました。

function ajaxCall(ajaxData) {
    $.post('scripts/ajax/connect.ajax.php', 
        ajaxData   /* you don't need {} here */
    , function(ajaxReturn) {
        if (ajaxReturn == 'deadSession') {
            location.reload();
        } else {
            // return ajaxReturn;

            // hand the data off to a processing function
            processData(ajaxReturn);   
        }
    });
}​

function processData(data) {
    // do stuff with the data here
}

関数を呼び出してpost呼び出しを成功させるには、パラメーターを表す文字列/オブジェクトを作成する方法の例を確認すると便利です。

// put the data in an object. {} are needed here.
var myData = { 'googleMetaSave' : '1' };

// make a call to fire the ajax post request
ajaxCall( myData );
// execution stops here, as your callback will handoff the response
 // to your processData function.

または、JavaScriptオブジェクトの代わりに、次のようにPOSTデータを表すことができます。

// represent data as a query string instead of object
var myData = 'googleMetaSave=1';

// send the data to the post function. 
ajaxCall( myData );
于 2012-05-26T09:07:14.770 に答える