2012-01-27 13 views
1

設定結果をMVCコントローラメソッドから変数にしたい。Ajax。どのように私は価値を返すことができる?

function someFunction(){ 
    var result; 
    $.Ajax{  
     //??? 
    } 
    return result; 
} 

// C++と比較して

int f() { //just! return result; } 

P.S:それは、非同期されていない、それは関数本体に値を戻すために同期関数呼び出しでなければなりません。

+0

jQueryのドキュメントを読んだことはありますか?例がいっぱいです。 http://api.jquery.com/jQuery.ajax/ – Tim

+0

JavaScriptは[イベント駆動型](http://en.wikipedia.org/wiki/Event-driven_architecture)です。 Ajax呼び出しを行い、応答が入ったときに呼び出されるコールバック関数を割り当てます。 –

+0

私はこのページについて知っています。しかし、私は簡単な質問があります。そして私はかなり簡単な答えが欲しい。 C++では単なる文字列です。 jQueryはどうですか? – Spirit

答えて

3

設定

public ActionResult Foo(){ 

return Content("Hello Anton"); 
} 

は、AJAXリクエストを設定するコントローラを値を返す

function greeting(){ 
    var x= $.ajax({ 
      url:'/ControllerName/Foo', 
      async:false,  
      }); 
    return x.responseText(); 
} 

今すぐfunctイオンのように

+1

+1いいです...「async:false」を完全に忘れました – ManseUK

+0

それは正しい答えだと思われます。私はそれを確認します。しばらく待ってください。 :) – Spirit

+0

ありがとう!ちょうど私が必要なもの。 – Spirit

0

Ajax呼び出しは非同期に動作し、それがこのように動作します:あなたのAjaxリクエストが正常に処理され

$.ajax({ 
    url: '/{Your Controller Name}/{Action Name}', 
    success: function(data) { 
    alert('My returned data is:' + data); 
    } 
}); 

した後、あなたは成功イベントで データを返されている処理することができます。

編集: 私は3nigmaの回答を実験してきたとアントンは、要求されたとして、それが働きました。

+0

私は警告について知っています。私はアラートを必要としない、私は関数の本体に変数​​の値を返す必要がありますし、いくつかのロジックをしてください。 – Spirit

0
function someFunction(){ 
    var result; 
    $.Ajax({ 
     url: '/some/ajax/call', 
     success: function (data){ 
      result = data; 
     } 
    }); 

    return result; 
} 

成功についてのセクションを参照してください:するために、デフォルトでtrueであることasync:falseを、作るために覚えて、http://api.jquery.com/jQuery.ajax/

+0

これは動作しません.... AJAXが非同期であるため、 'result undefined'というエラーが発生します。 – ManseUK

+0

これは機能しません。Ajax関数が非同期であるため、データに設定される前に結果を返します。 – arthur

+0

これは実際には機能しません。結果はajax呼び出しが終了する前(つまり、 'result = data;'が起こる前)に返されるため、結果は 'undefined'として返されます。 –

0

Anwarが述べたように、結果を返すことはできません。なぜなら、ajaxは非同期であるからです。あなたがしなければならないことは、いったん戻ってくる結果を持つ何かをするコールバック関数を定義することです。この場合は、「成功」関数です。

+0

うん!それは答えにはるかに近いです。それは非同期ではなく、値を返すために同期する必要があります。 – Spirit

+0

ajax呼び出しで 'async:false'を設定します。 –

0
var result; 

function someFunction(){ 
    var result; 
    $.Ajax({ 
     url: '/some/ajax/call', 
     success: function (data){ 
      result = data; 
      // call a method that processes result 
     } 
    }); 
} 

関数が呼び出される前に、あなたがこれを行うことができます... resultが作成されます - に - 成功したAJAXによるデータの返却時には、成功の方法は、結果が更新された後dataresultに関数を呼び出すことができ割り当て呼び出します何か他のことをしてください

関連する問題