0

サーバーに単純な JSON 投稿を作成しており、ブール値だけを取得しています。問題は、この json 呼び出しが、そのブール値も返す必要がある別の関数内にあることです。

ここには2つの解決策があります

  1. どういうわけか、JSON 戻り関数からデータを返し、ラッパー関数から再びデータを返します (ここにあるコードは機能しません。$.postJSON 内の "function(){} からデータを返す方法がわかりません:

        function testZipCode(zipcode, state) {
        var s;
        $.postJSON("/Cart/ZipTest",
            {
                state: state,
                zipCode: zipcode
            }, function (data) {
                if (!data.ok) {
                    s = false;
                }
                s = true;
            });
            return s;
    }
    

    }

  2. POST が終了するのを待ってから、次のような結果を返します: (ここで発生するエラーは、POST が終了する前に return を呼び出すことです。したがって、responseText は null です。誰か助けてください。

     var result = $.postJSON("/Cart/ZipTest",
     {
                state: state,
                zipCode: zipcode
            }, function (data) {
                if (!data.ok) {
                    //do something
                }
            });
            return $.parseJSON(result.responseText).ok;
    
4

2 に答える 2

2

ajax 呼び出しを defered オブジェクトとして返し、コールバック関数で何かを行います。

function someOtherFunction() {
    testZipCode('90102', 'FL').done(function(data) {
        if (!data.ok) something = false;
    });

}

function testZipCode(zipcode, state) {
    return $.getJSON("/Cart/ZipTest", {state: state, zipCode: zipcode} );
}​
于 2012-08-29T18:13:47.707 に答える
0

このようなことをしてください..

 {
            state: state,
            zipCode: zipcode
        }, function (data, count) {
            if (!data.ok) {
               getTheData(data); //do something
            }
        });


           return $.parseJSON(result.responseText).ok;

         function getTheData(data)
{
//do things with data here
}
于 2012-08-29T18:13:43.217 に答える