2012-03-05 7 views
1

でAJAX呼び出しからPOSTの結果を返す:はJSに追従している私は何をしようとしているJavaScriptの

function getSuccessForTest(testName,version,fromRev,toRev,res) {   

     var params = { 
      "methodToRun":"getSuccessForTest", 
      "version":version, 
      "startRev":fromRev, 
      "endRev":toRev, 
      "testName":testName  
     };   
     $.post("Stats.php", params,function(data){ 
      return parseInt(data.toString(),10); 
     }, "json");   
    } 

    getSuccessForTest(data[i],version,fromRev,toRev,res); 

私が間違って何をしているのですか?私がgetSuccessForTestを呼び出すたびに、私はStats.phpでPOST結果を取得しますが、値は呼び出し元の関数に返されません。

ありがとうございます!

+1

これらのすべてが重複しています:http://stackoverflow.com/search?q=jquery+return+value+from+ajax+call –

+0

[関数の外でJSONP呼び出しの結果を返す方法?](http://stackoverflow.com/questions/1341810/how-to-return-the-result-from-jsonp-call-outside-the-function) –

答えて

1

これは無名関数(function(data){...)に返されます。コールバックを使用する。試してみてください:

function getSuccessForTest(testName,version,fromRev,toRev,res, callback) {   

    var params = { 
     "methodToRun":"getSuccessForTest", 
     "version":version, 
     "startRev":fromRev, 
     "endRev":toRev, 
     "testName":testName  
    };   
    $.post("Stats.php", params,function(data){ 
     callback(parseInt(data.toString(),10)); 
    }, "json");   
    } 

    getSuccessForTest(data[i],version,fromRev,toRev,res, function(res) { 
     alert(res) 
    }); 
+0

ありがとうございました:-) –

3

戻り値がパラメータとして$ .postに与えられたコールバック関数内にあるため、機能しません。非同期のajaxリクエストを処理しているので、getSuccessForTestのコールバックも使用する必要があります。これを試してください:

function getSuccessForTest(testName,version,fromRev,toRev,res, callback) {   

    var params = { 
     "methodToRun":"getSuccessForTest", 
     "version":version, 
     "startRev":fromRev, 
     "endRev":toRev, 
     "testName":testName  
    };   
    $.post("Stats.php", params,function(data){ 
     callback(parseInt(data.toString(),10)); 
     //return parseInt(data.toString(),10); 
    }, "json");   
} 

getSuccessForTest(data[i],version,fromRev,toRev,res, function (data) { 
    alert(data); // This would be the value you wanted to return 
}); 
+0

ありがとう、 出来た ! –

0

echo返信時にstats.phpを返してください。これがあなたの問題を解決していない場合は、あなたのajax呼び出し処理スクリプトに使用している戻りメソッドが何であるか知りたいと思います。

+0

サーバ側でも問題があるかもしれませんが、実際の問題は非同期性のために値をAjax呼び出しから単純に "返す"ことができないことです。 –

0
return parseInt(data.toString(),10); 

あなたはそのように返し傾けます。 グローバル変数をいくつか割り当てるか、データを処理します

関連する問題