我希望从MVC控制器方法将结果设置为变量。
function someFunction(){
var result;
$.Ajax{
//???
}
return result;
}
//与c ++相比
int f() { //just! return result; }
P.S。:它不是异步的,它应该是同步函数调用,以便将值返回给函数体。
答案 0 :(得分:3)
设置控制器
public ActionResult Foo(){
return Content("Hello Anton");
}
设置ajax请求,记得将其设为async:false
,默认情况下为true,以便返回值
function greeting(){
var x= $.ajax({
url:'/ControllerName/Foo',
async:false,
});
return x.responseText();
}
现在您可以调用类似
的功能var v = greeting();
alert(v); //if every thing goes well you will see "Hello Anton"
答案 1 :(得分:0)
Ajax调用异步工作,它的工作方式如下:
$.ajax({
url: '/{Your Controller Name}/{Action Name}',
success: function(data) {
alert('My returned data is:' + data);
}
});
成功处理Ajax请求后,您可以处理退回的内容 成功事件中的数据。
修改强> 我已经尝试了3nigma的答案,它就像安东要求的那样。
答案 2 :(得分:0)
function someFunction(){
var result;
$.Ajax({
url: '/some/ajax/call',
success: function (data){
result = data;
}
});
return result;
}
请参阅有关成功的部分:http://api.jquery.com/jQuery.ajax/
答案 3 :(得分:0)
你不能依赖于返回结果,因为正如Anwar所提到的,ajax是异步的。你要做的是定义一个回调函数,该函数在结果返回后对结果执行某些操作,在本例中为“成功”函数。
答案 4 :(得分: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调用成功返回数据后,成功方法将data
分配给你可以调用的result
结果更新后的函数 - 执行其他操作