Javascript ajax客户机-服务器通信

Javascript ajax客户机-服务器通信,javascript,asp.net,ajax,Javascript,Asp.net,Ajax,我以前在这个网站上问过一个关于ajax客户机-服务器通信的问题 我得到了很多帮助。但是仍然无法理解,所以我们要问这个问题 我正在尝试将存储在变量'mem_ID'中的值从我的javascript页面…Default.aspx发送到我的服务器端-Default.aspx.cs页面。 Javascript:- <asp:Button ID="Button6" runat="server" BackColor="Silver" onclientclick="store_m

我以前在这个网站上问过一个关于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>
但是,我仍然没有从服务器得到任何回复。我期待着服务器端的回复“感谢您用ID给我打电话……”。有什么想法吗?

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


我不熟悉Asp.net和Ajax。在这个话题上需要帮助

您将以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>

测试

以下是我为您编写的一个完整示例:

<%@ 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>

[网络方法]
公共静态字符串MyMethod(字符串memId)
{
return string.Format(“感谢您用id:+memId给我打电话”);
}
$('#')。单击(函数(){
var memId=$('#').val();
$.ajax({
url:“”,
键入:“POST”,
contentType:'application/json;charset=utf-8',
数据:JSON.stringify({memId:memId}),
成功:功能(结果){
警报(结果d);
}
});
返回false;
});
出于演示的目的,它是一个自包含的Web表单,但您当然可以将代码从标记中分离出来。


<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.
//函数用于Capture客户端输入-成员ID。 函数存储_memID(){ 变量mem_ID; //“TextBox3”是服务器端ID。要获取客户端ID,请执行以下操作:- mem_ID=document.getElementById(“”).value; //返回确认('为“+mem_ID”显示时间线); ajax(mem_ID); } 函数ajax(mem_ID){ 警报(mem_ID); $.ajax({ url:'Default.aspx/MyMethod', 键入:“POST”, contentType:'application/json;charset=utf-8', 数据:JSON.stringify({memID:mem_ID}), 成功:功能(结果){ 警报(结果d); } }); } 在你的代码背后 [网络方法] 公共静态字符串MyMethod(字符串memID) { return string.Format(“感谢您用id:+memID给我打电话”); } 你所采取的方法是正确的, 从ajax传递的数据应该与Web方法中声明的string元素匹配。
通常,我创建一个Ajax.aspx文件,该文件处理大多数客户机-服务器Ajax交互,处理方式与下面示例中相同。然后此页面加载特定控件。我有时会在ajax请求中添加
函数
参数,以访问控件中的特定方法或直接在ajax.aspx页面上访问特定方法

示例:

非常感谢各位,你们帮了大忙。谢谢你让我开始达林!!还有穆图兰!!
<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.