【问题标题】:Make ASP.NET AJAX function call synchronous使 ASP.NET AJAX 函数调用同步
【发布时间】:2016-09-02 22:50:12
【问题描述】:

我有一个使用 ASP.NET AJAX 调用 Web 服务的 ASP.NET 表单。如何使调用同步?

// test.aspx

<script type="text/javascript">
    function GetDescription(){
        var code = document.getElementById("<%=txtCode.ClientID%>").value;
        var description = 
            MyNamespace.MyService.GetDescription(
                code, onSuccessGetDescription, null, null);
        return false;
    }

    function OnSuccessGetDescription(result){
        var txtDescription = 
            document.getElementById("<%=txtDescription.ClientID%>");
    }
</script>
<script type="text/javascript">
    $(document).ready(//function () {

        $('#<%=cmdSave.ClientID%>').click(function (e) {
            e.preventDefault();
            if (Page_ClientValidate()){
                // Populate jQuery.UI dialog box with code and description
                // and then
                $("#confirm-dialog").dialog("open");
            }
        });

    }
</script>

<asp:TextBox ID="txtCode" />
<asp:TextBox ID="txtDescription" />
<asp:Button ID="cmdSave" />

// test.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    txtCode.Attributes["onblur"] = "GetDescription();";
}

我看到的这个问题的答案说我应该将 async 属性设置为 false,但我不知道如何在此处执行此操作。 ASP.Net Ajax - PageMethods Synchronous call and retrieval of results 表示无法完成。我正在尝试征求第二意见。

如果我不能使调用同步,那么在 OnSuccess 函数返回之前进行 GetTransaction 轮询是否合法?什么是高效(即非 CPU 密集型)的方法?

【问题讨论】:

    标签: asp.net ajax


    【解决方案1】:

    JQuery Asynchronous

    jQuery.ajax({
    url: 'http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),
    success: function (result) {
       if (result.isOk == false) alert(result.message);
        },
        async: false
    });
    

    【讨论】:

    • 我快到了。以这种方式调用 Web 服务方法时,您是否希望自己解析结果? responseText 类似于: Pepsi 2L
    • 您可以在web服务站点上转换成JSON格式。 blogs.microsoft.co.il/pini_dayan/2009/03/12/… System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();字符串 sJSON = oSerializer.Serialize(object);
    猜你喜欢
    • 2017-02-23
    • 2011-12-21
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2018-04-29
    • 2013-07-12
    • 2010-12-29
    • 2023-03-08
    相关资源
    最近更新 更多