Javascript 调用 Web 服务和 ASP.Net 序列

本文关键字:ASP Net 序列 服务 调用 Web Javascript | 更新日期: 2023-09-27 17:55:47

我正在使用使用Web服务的Javascript函数完成后,我必须更新网格数据源

为了完成这个任务,我通过RegisterClientScriptBlock调用了javascript函数,然后调用了UpdateGridDataSource方法。

但是在调试时,我发现它首先调用了UpdateGridDataSource方法。然后在 Web 服务中调用该方法!

ASP.Net 代码

System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "delete", "DrawPOI();", true);
UpdateDataSource(); 

JavaScript代码

function DeletePOI(arg) {
      //Some Code  
        $.ajax({
            url: "JSBLL.asmx/DeletePOI",
            type: "POST",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: "{id:'" + arg + "'}",
            success: function (msg) {
                alert(msg.d);
            },
            error: function (e) {
                alert('Error');
            }
        }); //some code
        return false;
    }

网络服务 :

[WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string DeletePOI(string ID)
        try
            {
                if (id == "")
                    throw new Exception();
                long ID = Convert.ToInt64(id);
                using (GuardEntities database = new GuardEntities())
                {
                    var poi = database.POIs.Where(x => x.ID == ID).FirstOrDefault();
                    database.POIs.DeleteObject(poi);
                    database.SaveChanges();
                }
                return "POI Deleted Successfully";
            }
            catch
            {
                return "Error Occured";
            }
}

问题是在 DeletePOI(字符串 ID)之前调用了 UpdateDataSource()

Javascript 调用 Web 服务和 ASP.Net 序列

注册

RegisterClientScriptBlock()的Javascript代码在浏览器中的客户端上运行。 ASP.NET 代码在服务器上运行。

当它到达行时:

System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "delete", "DrawPOI();", true);

它说,当页面在客户端上加载时,调用DrawPOI() 。然后,它会立即运行下一行代码:

UpdateDataSource(); 

完成所有 ASP.NET 代码后,它会将您的页面发送到客户端。基本上,您要做的事情是行不通的。您不能在服务器端 ASP.NET 代码中间调用客户端 Javascript,然后等待它返回。

您可以做的是直接从服务器端代码调用 Web 服务。