C# 为什么ajax在其必要性之后返回值? @使用(Ajax.BeginForm(“编辑”、“xyz”、新的AjaxOptions{ InsertionMode=InsertionMode.Replace, HttpMethod=“POST”, UpdateTargetId=“divDisplay”, })) { } 函数OpenErrorPopup(){ 调试器; var-temp=false; $.ajax({ cache:false, url:“/xyz/ChecLogin/”, 成功:函数(UserLoggedOn){ 调试器; if(UserLoggedOn==“True”){ 如果(条件){ 温度=假; 返回温度; } 否则{ 温度=真; 返回温度; } } 否则{ 温度=假; 返回温度; } }, 错误:函数(err){ 温度=假; 返回温度; } }); 调试器; 返回温度; }

C# 为什么ajax在其必要性之后返回值? @使用(Ajax.BeginForm(“编辑”、“xyz”、新的AjaxOptions{ InsertionMode=InsertionMode.Replace, HttpMethod=“POST”, UpdateTargetId=“divDisplay”, })) { } 函数OpenErrorPopup(){ 调试器; var-temp=false; $.ajax({ cache:false, url:“/xyz/ChecLogin/”, 成功:函数(UserLoggedOn){ 调试器; if(UserLoggedOn==“True”){ 如果(条件){ 温度=假; 返回温度; } 否则{ 温度=真; 返回温度; } } 否则{ 温度=假; 返回温度; } }, 错误:函数(err){ 温度=假; 返回温度; } }); 调试器; 返回温度; },c#,javascript,.net,ajax,asp.net-mvc-3,C#,Javascript,.net,Ajax,Asp.net Mvc 3,预期:首先调用OpenErrorPop,执行ajax,然后动态返回值 实际:尽管调用了OpenErrorPop,但它首先直接将临时值返回给,然后执行ajax 我知道ajax的执行将是异步的。所以我尝试了ajax的Begin事件,但没有返回值。请就这两个问题中的任何一个提供一些解决方案 谢谢输入按钮(或者总是从OpenErrorPop返回false)并通过$('form#xxx')在OpenErrorPop内提交表单。submit()如果在同一域上进行ajax调用,可以指示同步。只需将“async

预期:首先调用OpenErrorPop,执行ajax,然后动态返回值

实际:尽管调用了OpenErrorPop,但它首先直接将临时值返回给
,然后执行ajax

我知道ajax的执行将是异步的。所以我尝试了ajax的Begin事件,但没有返回值。请就这两个问题中的任何一个提供一些解决方案


谢谢

输入
按钮(或者总是从OpenErrorPop返回false)并通过
$('form#xxx')在OpenErrorPop内提交表单。submit()
如果在同一域上进行ajax调用,可以指示同步。只需将“async:false”传递给ajax选项:

@using (Ajax.BeginForm("Edit", "xyz", new AjaxOptions { 
    InsertionMode = InsertionMode.Replace, 
    HttpMethod = "POST", 
    UpdateTargetId = "divDisplay", 
}))

{

<input type="submit" value="Edit" id="Edit" class="formBtn" onclick='return OpenErrorPopup()'/>

}


<script type="text/javascript" language="javascript">

function OpenErrorPopup() {

        debugger;
        var temp = false;

        $.ajax({
            cache: false,
            url: "/xyz/ChecLogin/",

            success: function (UserLoggedOn) {
                debugger;
                if (UserLoggedOn == "True") {
                    if (condition) {
                        temp = false;
                        return temp;
                    }
                    else {
                        temp = true;
                        return temp;
                    }
                }
                else {
                    temp = false;
                    return temp;
                }
            },

            error: function (err) {
                temp = false;
                return temp;
            }
        });        

        debugger;              
        return temp;

    }
</script>

无需从成功和错误回调返回tmp,只需初始化它。

这个“表单#xxx”应该是什么??是否应该是UpdateTargetId中给定的值??或者按钮的id??因为我尝试了按钮id“编辑”,但它无法工作。它保留了你的提交按钮。不要。曾经曾经做信息技术请当服务器处理请求时,它将“冻结”客户端浏览器。噢:(什么可能是最好的解决方案?@Alex:eek synchronous是万恶之源。如果你的页面加载需要10秒钟怎么办。你想有一个“挂起”的网页?或者如果浏览器挂起不好。ajax成功函数中没有多行,所以可能不会挂起浏览器。
$.ajax({
        cache: false,
        async:false,
        url: "/xyz/ChecLogin/",

        success: function (UserLoggedOn) { ...