0

我之前在这个网站上问过一个关于 ajax 客户端-服务器通信的问题。

我得到了很多帮助。但还是想不通,所以重新问这个问题。

我正在尝试将存储在变量“mem_ID”中的值从我的 javascript 页面...Default.aspx 发送到我的服务器端 - Default.aspx.cs 页面。

Javascript:-

<asp:Button ID="Button6" runat="server" BackColor="Silver" 
            onclientclick="store_memID()" style="margin-left: 20px" Text="Submit" 
            Width="102px" Font-Bold="True" Height="28px" />


<script type = "text/javascript" src ="http://code.jquery.com/jquery-1.9.0.min.js"> </script>


 <script type = "text/javascript"> 

        // Function to caputure client-input- Member_ID.
        function store_memID() {

            // 'TextBox3' is the server side ID. To get the client side ID we do the following:-
            mem_ID = document.getElementById('<%=TextBox3.ClientID%>').value;

            //return confirm('TimeLine is displayed for: ' + mem_ID);

            ajax();
        }


        function ajax(){
            $.ajax({
                url: 'Default.aspx/MyMethod',
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                data: JSON.stringify({ memID: mem_ID }),
                success: function (result) {
                alert(result.d);
                }
            });

        }

        </script>

服务器端:-

    public partial class _Default : System.Web.UI.Page
    {


        protected void Page_Load(object sender, EventArgs e)
        {

        }


        // Defining a page method. 
        [WebMethod]
        public static string MyMethod(string mem_ID)
        {
            return string.Format("Thanks for calling me with id: " + mem_ID);



        }
` more code here`....

但是,我仍然没有得到服务器的任何回复。我期待从服务器端返回“感谢您用 ID 给我打电话:.....”。有任何想法吗?

我在 MyMethod 中,在响应行,在服务器端添加了一个断点,并且没有命中。所以我假设这条线甚至没有被遍历。

我是 Asp.net 和 Ajax 的新手。并需要有关此主题的帮助。

4

4 回答 4

1

这是我为您编写的完整示例以供您入门:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Services" %>
<script type="text/c#" runat="server">
    [WebMethod]
    public static string MyMethod(string memId)
    {
        return string.Format("Thanks for calling me with id: " + memId);
    }
</script>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Button ID="MyButton" runat="server" Text="Submit" />
        <asp:TextBox ID="MyTextBox" runat="server" />
    </form>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    <script type="text/javascript">
        $('#<%= MyButton.ClientID %>').click(function () {
            var memId = $('#<%= MyTextBox.ClientID %>').val();
            $.ajax({
                url: '<%= ResolveUrl("~/Default.aspx/MyMethod") %>',
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                data: JSON.stringify({ memId: memId }),
                success: function (result) {
                    alert(result.d);
                }
            });
            return false;
        });
    </script>
</body>
</html>

出于演示的目的,它是一个自包含的 WebForm,但您当然可以将后面的代码与标记分开。

于 2013-02-05T10:27:56.617 回答
1
<form id="form1" runat="server">
    <div>
    <asp:Button ID="Button6" runat="server" BackColor="Silver" 
            onclientclick="store_memID()" style="margin-left: 20px" Text="Submit" 
            Width="102px" Font-Bold="True" Height="28px" /> 
<script type = "text/javascript" src ="http://code.jquery.com/jquery-1.9.0.min.js"> </script>
 <script type = "text/javascript">

     // Function to caputure client-input- Member_ID.
     function store_memID() {
         var mem_ID;
         // 'TextBox3' is the server side ID. To get the client side ID we do the following:-
         mem_ID = document.getElementById('<%=TextBox3.ClientID%>').value;

         //return confirm('TimeLine is displayed for: ' + mem_ID);

         ajax(mem_ID);
     }
     function ajax(mem_ID) {
         alert(mem_ID);
         $.ajax({
             url: 'Default.aspx/MyMethod',
             type: 'POST',
             contentType: 'application/json; charset=utf-8',
             data: JSON.stringify({ memID: mem_ID }),
             success: function (result) {
                 alert(result.d);
             }
         });
     }
        </script>
    <asp:TextBox id="TextBox3" runat="server"></asp:TextBox>
    </div>
    </form>
In Your Code Behind

[WebMethod]
        public static string MyMethod(string memID)
        {
            return string.Format("Thanks for calling me with id: " + memID); 
        }

The method u have done all was right execpt,
The data passing from ajax should match the string Element declared in the Web-method.
于 2013-02-05T11:47:33.590 回答
0

您将值作为 JSON 对象传递,指定请求的数据类型并指定服务器的返回格式很重要。

function ajax(){
            $.ajax({
                url: 'default.aspx/MyMethod',
                type: 'POST',
                dataType: "json",
                contentType: 'application/json; charset=utf-8',
                data: JSON.stringify({ memID: mem_ID }),
                success: function (result) {
                alert(result.d);
                }
            });
        }


// Defining a page method. 
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string MyMethod(string mem_ID)
 {
            return string.Format("Thanks for calling me with id: " + mem_ID);
 }

然后您需要添加一个 ScriptManager 和 UpdatePanel 来触发 Ajax 调用。ScriptManager 提供了从 Aspx 页面调用 WebMethods 的功能。将此与我提供的上述代码一起使用。

<head runat="server">
    <title></title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.min.js"/>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>

         <asp:Button ID="Button6" runat="server" BackColor="Silver" OnClientClick="store_memID()"
        Style="margin-left: 20px" Text="Submit" Width="102px" Font-Bold="True" Height="28px" />

         <asp:TextBox ID="TextBox3" runat="server">Testing</asp:TextBox>
    </ContentTemplate>
</asp:UpdatePanel>

</form>
</body>
于 2013-02-04T23:27:14.977 回答
0

通常我会创建一个 Ajax.aspx 文件来处理大多数客户端-服务器 ajax 交互,就像在下面的示例中一样。然后这个页面加载特定的控件。我有时会function在 ajax 请求中添加一个参数来访问控件中的特定方法,或者直接在 Ajax.aspx 页面上访问。

示例:
简单的 ASP.net ajax 框架

于 2013-02-07T07:59:18.473 回答