2012-01-27 8 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

자바 스크립트는 [이벤트 기반] (http://en.wikipedia.org/wiki/Event-driven_architecture)입니다. Ajax 호출을 만들고 응답이 들어올 때 호출되는 콜백 함수를 할당합니다. –

+0

이 페이지에 대해 알고 있습니다. 그러나 나는 간단한 질문이있다. 그리고 나는 아주 간단한 대답을 원합니다. C++에서는 단 하나의 문자열입니다. jQuery는 어떻습니까? – Spirit

답변

3

설정

public ActionResult Foo(){ 

return Content("Hello Anton"); 
} 

는 아약스 요청을 설정 컨트롤러를 값을 반환하십시오.

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

이제는 funct를 호출 할 수 있습니다. ion like

var v = greeting(); 
alert(v); //if every thing goes well you will see "Hello Anton" 
+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의 답변을 실험 해본 결과 Anton가 요청한대로 작동했습니다.

+0

경고에 대해 알고 있습니다. 나는 경보가 필요 없어, 나는 함수 본문에 변수 값을 반환하고 이후에 몇 가지 논리를해야합니다. – Spirit

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

    return result; 
} 

성공에 대한 섹션을 참조하십시오하기 위해 기본적으로 사실이 async:false을 만들 기억, http://api.jquery.com/jQuery.ajax/

+0

이것은 작동하지 않습니다 .... AJAX가 비동기이기 때문에'result undefined' 오류가 발생합니다. – ManseUK

+0

이것은 작동하지 않습니다. Ajax 함수가 비동기이기 때문에 결과가 데이터로 설정되기 전에 결과를 반환합니다. – arthur

+0

이것은 실제로는 작동하지 않습니다. 결과는 아약스 호출이 끝나기 전에 (즉,'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가 생성됩니다 -에 - 성공적으로 성공 방법은 결과가 업데이트 된 후이 함수를 호출 할 수 dataresult에 할당 호출 AJAX에 의해 데이터의 반환에 다른 것을하십시오

관련 문제