2017-06-27 11 views
0

私はajaxを呼び出そうとしています。そして、ajaxは'WebMethod`を呼び出しますが、私のAJAXは実行されません。ここで ajaxがコールしていない

TextBox.TextChangedイベント

<input id="usernamesignup" name="usernamesignup" required="required" type="text" placeholder="User Name" runat ="server" onchange="checkUserName();"/> 

とAJAXのために私が書いたJavaScript関数

function checkUserName() 
    { 
     debugger; 
     $.ajax({ 

      type: "POST", 
      async: true, 
      url: "SignUp1.aspx/CheckUserNameAvailability", 
      data: '{username: "'+ $("#<%=usernamesignup.ClientID%>").value.trim() +'" }', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (response) { 
       var msg = $("#<%=LabelStatus.ClientID%>")[0]; 
       switch (response.d) { 
        case "true": 
         msg.style.display = "block"; 
         msg.style.color = "red"; 
         msg.innerHTML = "User Name Or Email already exists."; 
         break; 
        case "false": 
         msg.style.display = "block"; 
         msg.style.color = "green"; 
         msg.innerHTML = "User Name Or Email Available"; 
         break; 
       } 

      } 
     }); 

    } 

のHTMLコードで、私のWebMethod

[System.Web.Services.WebMethod] 
    public static int CheckUserNameAvailability(string username) 
    { 
     string conString = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString; 
     using (MySqlConnection conn = new MySqlConnection(conString)) 
     { 
      using (MySqlCommand cmd = new MySqlCommand("spCheckUserNameAvailability", conn)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.AddWithValue("UserName", username); 
       conn.Open(); 
       return (int)cmd.ExecuteScalar(); 
      } 
     } 
    } 

は、誰もが私にいくつかを提案してくださいですこのコードを変更して動作させる

+0

あなたのinput要素の後にJSコードはありますか?あなたの機能はグローバルスコープにさらされていますか? – TryingToImprove

+2

あなたのメソッドは 'bool'ではなく' int'を返します – Franck

答えて

0

あなたのメソッドが呼び出されていませんか?ブレークポイントを追加しましたか?

あなたのJavascriptでは、「真」または「偽」をチェックしています。

switch (response.d) { 
        case "true": 

ただし、サーバーサイドコードでは整数を返します。

return (int)cmd.ExecuteScalar(); 

あなたのスイッチは決してどのケースにも当たらないでしょう。

ブラウザで開発者コンソールを開き(F12)、コンソールタブでJavascriptエラーを確認してから、ネットワークタブでAJAX呼び出しの結果を適切にトラブルシューティングすることを検討してください。

0

あなたのHTMLをレンダリングしたときのように聞こえるのは、その機能が何であるかわかりません。

あなたのjsにリスナーを入れてみてください。

(function() { 
 
//self invoking function to wait for dom. 
 

 
function checkUserName() 
 
    { 
 
     debugger; 
 
     $.ajax({ 
 

 
      type: "POST", 
 
      async: true, 
 
      url: "SignUp1.aspx/CheckUserNameAvailability", 
 
      data: '{username: "'+ $("#<%=usernamesignup.ClientID%>").value.trim() +'" }', 
 
      contentType: "application/json; charset=utf-8", 
 
      dataType: "json", 
 
      success: function (response) { 
 
       var msg = $("#<%=LabelStatus.ClientID%>")[0]; 
 
       switch (response.d) { 
 
        case "true": 
 
         msg.style.display = "block"; 
 
         msg.style.color = "red"; 
 
         msg.innerHTML = "User Name Or Email already exists."; 
 
         break; 
 
        case "false": 
 
         msg.style.display = "block"; 
 
         msg.style.color = "green"; 
 
         msg.innerHTML = "User Name Or Email Available"; 
 
         break; 
 
       } 
 

 
      } 
 
     }); 
 

 
    } 
 
    
 
    var myInput = document.getElementById("usernamesignup"); 
 
    myInput.addEventListener("change", checkUserName); 
 
    
 
})

関連する問題