在c#中调用JavaScript后面的代码

时间:2014-08-01 03:34:44

标签: c# javascript asp.net

我有一个搜索页面电话"公司"当用户输入关键字并点击"搜索"它将调用一些函数在文件" companiesdatagrid"中显示搜索结果。

现在,我在companiesdatagrid.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)
代码隐藏文件中的

(CompaniesDatagrid.ascx.cs) 但是,我将测试一个简单的案例,在代码后面调用一个简单的函数:

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

在page_load函数(文件CompanniesDatagrid.ascx.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;
            }
        }

在companiesdatagrid.ascx中我有这个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>

它只会显示警告&#34;已更改&#34;然后&#34;改变2&#34;然后&#34;失败&#34;。我从来没有获得成功警报,这意味着我从来没有在成功的代码中调用add()函数!?请注意,我在网址上注释了所有注释并得到了相同的结果! 如何在这里正确实现?我真的不在意,请帮忙! 谢谢!

1 个答案:

答案 0 :(得分:2)

首先更改网址并检查它是否未达到适当的资源, 然后检查数据是否正确..

 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");                
             }                
   });