0

そのため、しばらくASP.netを実行しておらず、JavaScript検証を呼び出そうとしていますが、これは機能します。その後、コードビハインドイベントを呼び出す必要があります。

簡単になると思いましたが、やっかいなことになりました。

私がやりたいのは、テキストボックスが空かどうかを確認することです。空でない場合は、アラートを実行し、サービス側のメソッドを実行しないでください。空でない場合は、メソッドを実行します。

コードを変更してもかまいません(ただし、マテリアルページとコンテンツセクションを引き続き使用する必要があります)。

 <input type="submit" value="Update" onclick="validate()"/>
<SCRIPT LANGAUGE="JavaScript">
       function validate() {

           var jname = document.getElementById('MainContent_txtname').value;

           if (jname == null) {
               alert("Please Enter Name");

           }
           else {
               CallServerMethod();
           }
        }
       function CallServerMethod() {

                UpdateClient() //I dont work
                }
       </SCRIPT>

何か案は?ありがとう

4

6 に答える 6

2

これを行うために、Ajax でサーバー ページ (aspx ページ/ .ashx ハンドラー) を呼び出すことができます。これがjQueryで行う方法です(プロジェクトですでに使用している場合)

function CallServerMethod()
{
    $.post("yourserverpage.aspx", { name : "Scott" }, function(data){
      //now data variable has the result from server page. do whatver you 
      // want with that. May be an alert
     alert(data);
    });
}

yourserverpage.aspxファイルでは、リクエスト パラメータから name キーの値を読み取り、実行したいサーバー コードを実行して、 Response.Write() メソッドで何かを返すことができます。

元 :Response.Write("user saved");

于 2012-05-23T16:52:01.937 に答える
0

このサイトには、このトピックに関する豊富な情報があります。

ここから始めましょう:クライアント側の JavaScript からサーバー側の関数を呼び出す

于 2012-05-23T16:50:21.950 に答える
0

あなたが探しているのは ajax です。簡単な方法は、xmlhttprequest (javascript からサーバー メソッドを呼び出すために使用されるオブジェクト) をラップする $.get または $.getJSON または $.ajax メソッドを持つ jquery を使用することです。

別の簡単な方法は、WebMethod を調べることです。サーバー側メソッドに属性を設定[WebMethod]し、スクリプト マネージャーを aspx ページに追加してから、PageMethods.MyServerMethod でサーバー メソッドを呼び出す必要があります。

$.ajax({
    type: "POST",
    url: "mypage.aspx/ServerMethodName",    
    data: '{"id":"' + $("#divID").text() + '"}',        
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (returnValueFromServerMethod) {
        if(returnValueFromServerMethod.d != "")
            //do something great

    }
});

[WebMethod]
public static string ServerMethodName(string id)
{
    HttpContext.Current.Session["ID"] = id;            
}

ページ メソッドを有効にするには、page.aspx にスクリプト マネージャーを追加する必要があります。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">                    
</asp:ScriptManager>

ページ メソッドをよりクリーンなサービス .svc に置き換えることができます。

于 2012-05-23T16:56:59.880 に答える
0

私はこれを行うために .ajax({ ... 方法を使用してきました。しかし、最近、これを達成するための別のより簡単な方法に出会いました-MSDNリンク

于 2012-05-23T18:11:59.250 に答える
0
function validate(){
    var jname = document.getElementById("MainContent_txtname').value;

    if(jname.length == 0){
        alert("Empty text field");
    }else{
        CallServerMethod(jname);
    }
}
function CallServerMethod(param){
    var xmlhttp;
    if(window.XMLHttpRequest){
        xmlhttp = new XMLHttpRequest();
    }else{
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //we have an xmlhttp object
    xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readyState==4 && xmlhttp.status==200){
            var response = xmlhttp.responseText;
            UpdateClient(response);         
        }
    }
    xmlhttp.open("GET","server_page.php?jname="+param,true);
    xmlhttp.send();
}
function UpdateClient(response){
    alert("Server responded with response: "+response);
}

次に、validate を onChange イベントに設定します。そう....<input....onChange="validate();" />

明らかに、server_page.php は server_page.asp などでもかまいません。パラメーターは、GET 要求でエンコードされた URL です。投稿リクエストを使用して送信することもできますが、これにはさらに作業が必要です...

//in the last part of CallServerMethod(),
//replace the last 2 lines with:
xmlhttp.open("POST","server_page.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length",param.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(param);
于 2012-05-23T17:02:51.183 に答える
0

簡単な解決策は、javascript に非表示のボタンをクリックさせることです。

<SCRIPT LANGAUGE="JavaScript">
   function validate() {

       var jname = document.getElementById('MainContent_txtname').value;

       if (jname == null) {
           alert("Please Enter Name");

       }
       else {
           CallServerMethod();
       }
    }
   function CallServerMethod() {

            document.getElementById('<%#btnRefresh.ClientID %>').click(); 
            }
   </SCRIPT>

次に、コードビハインドのボタンクリックイベントで、やりたいことを何でもします。

私があなたを正しく理解していれば、これは最も簡単な解決策のようです。

于 2012-05-24T23:05:01.443 に答える