在c#中调用JavaScript中的代码

Call code behind from JavaScript in c#

本文关键字:代码 JavaScript 调用      更新时间:2023-09-26

我有一个搜索页面调用"companies"当用户输入关键字并单击"search"时,它将调用一些函数来显示文件" companyesdatagrid "中的搜索结果。

现在,我在companydatagrid中创建了一个简单的下拉列表。ascx文件:

  <asp:UpdatePanel ID="UpdatePanel1"  runat="server">
          <ContentTemplate>
              <asp:DropDownList ID="DropDownList1" Width="200px" runat="server" DataTextField="ItemTypeName" DataValueField="ItemTypeId"
                  onchange = "CallServerMethod(this)" ValidationGroup="vgLibItem"  >
              </asp:DropDownList>
          </ContentTemplate>
          <Triggers>
              <asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" />
          </Triggers>

我希望它调用一个Java Script函数,该函数将调用函数

public void DropDownList1sel(object sender, EventArgs e)

后面的代码文件(companyesdatagrid . asx .cs)但是,我将测试一个简单的情况,在代码后面调用一个简单的函数:

 public void add()
    {
        int a = 1;
        int b = 3;
        int c = a + b;
    }

在page_load函数(文件公司数据农业. asx .cs)我有:

   protected void Page_Load(object sender, System.EventArgs e)
    {
        // clear the javascript literal
        this.responseLiteral.Text = "";
        if (!Page.IsPostBack)
        {
            if (Request.Form["Method"] == "Add")
            {
                add();
                return;
            }
        }

在companyesdatagrid中。我有这个Java脚本:

    <script type="text/javascript">
   function CallServerMethod() {
       alert("changed");
       var dataToSend = { Send1: 'Value1', Send2: 'Value2', Method: 'Add' };
       var opts =
        {
              url: 'companiesdatagrid.ascx',
            //url: 'companies.ascx',
            //url: 'CompaniesDatagrid.ascx.cs',
            //url: 'companies.ascx.cs'
            //url: 'companiesdatagrid.ascx/add',
            //url: 'CompaniesDatagrid.ascx.cs/add',
            //url: 'CompaniesDatagrid.aspx/add',
            //url: 'DesktopDefault.aspx?tabindex=2&tabid=15/add',
            data: dataToSend,
            dataType: 'JSON',
            type: 'POST',
            success: function (response) {
                //Do something here if successful
                alert('success');
            },
            error: function () {
                alert('failure');
            }
        }
        $.ajax(opts);
        alert("changed 2");
        }
</script>

它将只显示警报"更改",然后"更改2",然后"失败"。我从来没有得到成功警报,这意味着我从来没有调用add()函数后面的代码成功!?请注意,所有的评论在url我尝试并得到相同的结果!如何在这里正确地实现它?我真的束手无策了,请帮帮我吧!

首先更改url并检查它是否到达正确的资源,然后检查数据是否正确。

 var dataToSend = { Send1: 'Value1', Send2: 'Value2', Method: 'Add' };
 var opts =
           $.ajax({               
       type: "POST",                
       url: "companiesdatagrid.ascx/methodname to be called",                
       data: dataToSend ,                
       contentType: "application/json; charset=utf-8",                
       dataType: "json",                
       success: function(msg) {                
          alert('sucess');                
       },                
       error: function() {                
             alert("error");                
             }                
   });