0

サーバーから値を取得するために jquery ajax を使用しました。メソッドが ajax の成功またはエラーになると、値を返す必要があります。その方法を教えてください。

$.ajax({
    cache: false,
    async: true,
    type: "GET",
    timeout:6000,
    dataType: "json",
    url:url +"log",
    data: { ContactEmail : $("#username").val()},
    contentType: "application/json;charset=utf-8",
    success: function (result) 
    {
        //Here I need to return the result and should get in another method
    },
    Error: function (e)
    {
        //Here I need to return the result and should get in another method
    }
});

アップデート

たとえばcheckNetConnection()を呼び出すと、値が返されます。このようにする必要があります

function checkNetConnection() 
{
        var netresult=0;
        var networkState = navigator.network.connection.type;
        var states = {};
        states[Connection.UNKNOWN]  = 'Unknown connection';
        states[Connection.ETHERNET] = 'Ethernet connection';
        states[Connection.WIFI]     = 'WiFi connection';
        states[Connection.CELL_2G]  = 'Cell 2G connection';
        states[Connection.CELL_3G]  = 'Cell 3G connection';
        states[Connection.CELL_4G]  = 'Cell 4G connection';
        states[Connection.NONE]     = 'No network connection';
        if(states[networkState]=='Ethernet connection'||states[networkState]=='WiFi connection' || states[networkState]=='Cell 2G connection' || states[networkState]=='Cell 3G connection' || states[networkState]=='Cell 4G connection')
        {
            netresult=1;
        }
        else
        {
            netresult=0;
        }
        return netresult;
}
4

4 に答える 4

5

コードにはいくつかの問題があります。指定contentType: "application/json;charset=utf-8"しましたが、JSON リクエストを送信していません。JSON リクエストを送信する場合はJSON.stringify、データに対して次のメソッドを使用します。

data: JSON.stringify({ ContactEmail : $("#username").val() }),

そうでない場合は、この contentType を削除します。そうしないと、サーバーにとってあいまいになります。コードのもう 1 つの問題は、エラー コールバックがerrorではなくと呼ばれることErrorです。結果の取得に関する限り、成功のコールバック内では引数として直接渡されます。

success: function (result) {
    // Here I need to return the result and should get in another method
    anotherMethod(result);
},

Web サーバーが正しいコンテンツ タイプの応答ヘッダーを設定している場合、success メソッドに渡された引数は、jQuery によって基になる型に自動的に解析されることにも注意してください。したがって、たとえば、サーバーが応答本文を設定Content-Type: application/jsonして書き込む場合、{"foo":"bar"}このオブジェクトを直接操作できますalert(result.foo);。このコールバック内で、追加の解析は必要ありません。Web サーバー スクリプトが適切に記述されておらず、適切なコンテンツ タイプ ヘッダーが設定されていない場合 (たとえばContent-Type: 'text/html'、JSON 形式の文字列を設定して応答本文に書き込む場合)、パラメーターを使用して jQuery に強制的に JSON を解析させることがdataType: 'json'できます。しかし、通常、すべてが正しければ、それを行う必要はありません。

さて、errorコールバックは異なります。オブジェクトが引数として渡されるxhrため、今回は結果を文字列として抽出する必要があります。

error: function(xhr) {
    anotherMethod(xhr.getResponseText());    
}

この文字列が JSON を表している場合は、次のように解析できます。

error: function(xhr) {
    var result = $.parseJSON(xhr.getResponseText());
    anotherMethod(result);    
}
于 2012-07-07T12:30:47.037 に答える
0

結果は変数resultとに保存されますe:

...
success: function (result) 
    {
        // result contains the results
        foo( results );
    },
    Error: function (e)
    {
        // e contains the error
        bar( e );
    }
...

// Function to do something with the returned results
function foo( someData ) {
  // do stuff
}

// Function to do something with the error
function bar( someErrorData ) {
  // do stuff
}

データを表示する簡単な方法は、関数呼び出しの代わりにalert:alert( results )またはを使用して表示することです。alert( e )

于 2012-07-07T12:29:03.207 に答える
0

success メソッドresultには、サーバーから送信したデータを含む json オブジェクトがあります。

データを見るために使用console.log(result)します。

            success: function (result) 
            {
              console.log(result);
            },
            Error: function (e)
            {
            //Here I need to return the result and should get in another method
            }
于 2012-07-07T12:29:54.187 に答える
0
  success: function (result) 
            {

              alert(result.someobject); //someobject is returned by your JSON
            },
于 2012-07-07T12:30:55.250 に答える