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 オブジェクトとして渡します。リクエストの dataType を指定し、サーバーから返される形式を指定することが重要です。

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 相互作用のほとんどを処理する Ajax.aspx ファイルを作成します。次に、このページは特定のコントロールを読み込みます。functionコントロール内または Ajax.aspx ページで直接特定のメソッドにアクセスするために、ajax 要求にパラメーターを追加することがあります。

例:
シンプルな ASP.net ajax フレームワーク

于 2013-02-07T07:59:18.473 に答える