簡體   English   中英

如何從服務器端更改客戶端javascript的變量?

[英]How to change client side javascript 's variable from server side?

我從某個網站的登錄頁面代碼中汲取了靈感。 我找到了一個我不知道如何實現的功能。

該登錄頁面使用兩種輸入控件的形式收集用戶名和密碼:

<form method="post" runat="server" action="myLogin.aspx">

    <input type="text" class="us_name" name="txtUserName" id="txtUserName" value="" />

    <input type="password" class="us_pwd" name="txtPassword" id="txtPassword" value="" />
</form>

在該頁面中,我還找到了一些類似以下的JQuery代碼:

 <script language="javascript" type="text/javascript">
     $(document).ready(function () {
         var error = 0;
         if (error > 0) {
             switch (error) {
                 case 1:
                     $("#ListMsg").html("username and pwd can not be empty");
                     $("#txtUserName").focus();
                     break;
                 case 2:
                     $("#ListMsg").html("Pic code can not be empty");
                     $("#txtCheckCode").focus();
                     break;
                 case 3:
                     $("#ListMsg").html("Pic code err");
                     $("#txtCheckCode").focus();
                     break;
                 case 36006:
                     $("#ListMsg").html("username err");
                     $("#txtCheckCode").focus();
                     break;
                 case 36007:
                     $("#ListMsg").html("password err");
                     $("#txtCheckCode").focus();
                     break;
                 case 20012:
                     $("#ListMsg").html("account is lock");
                     $("#txtCheckCode").focus();
                     break;
                 case 10007:
                     $("#ListMsg").html("can not access");
                     $("#txtCheckCode").focus();
                     break;
                 default:
                     $("#ListMsg").html("username or password err");
                     $("#txtPassword").focus();
                     break;
             }
         }
     });

上面的代碼似乎是在登錄失敗時顯示錯誤消息,但是請注意以下語句:

    var error = 0;

當我輸入錯誤的密碼並查看頁面源代碼時,我發現它已自動更改為:

    var error = 36007;

我猜想登錄失敗時必須由服務器端代碼更改此變量,並使用它來指示失敗原因。 但是我不知道服務器如何設置客戶端JQuery變量的值,有人可以舉一個例子嗎?

您可以使用ajax來促進腳本和php服務器之間的通信,而無需更改頁面。 當用戶單擊登錄按鈕時,您可以將其輸入值作為ajax帖子發送。 考慮以下示例:

$( '#btn-login' ).click( function () {
     $.ajax({
          url: "your.server.address/function_that_sends_those_codes",
          data: {
                    userID: $( '#txtUserName' ).val(),
                    pwd: $( '#txtPassword' ).val()
                },
          type: 'POST',
          dataType: 'JSON',

          success: function ( response ) {
                                    error = response.errCode; //or whatever your server
                                                              //sends
                                },
          error: function ( errorMsg ) {
                                    console.log( errorMsg );
                             }
     });
});

在您的php代碼中,您檢索使用$_POST[ 'userID' ]$_POST[ 'pwd' ] 您可以通過與數據庫進行交互來計算代碼,然后執行以下操作:

echo json_encode( array( yourErrorCode ) );

“ yourErrorCode”作為“響應”發送到您的“成功”回調函數。 您可以在瀏覽器的控制台中查看收到的響應或引發的任何錯誤。

快樂的編碼:)

要從后面的代碼中設置javascript變量,您可以注冊客戶端腳本 像這樣:

 ScriptManager.RegisterStartupScript(this, this.GetType(), "", "error = 36007;", true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM