2011-12-09 7 views
0

私はJquery Ajaxの初心者です。あなたの助けが必要です。私は自分のDB内のUsername Existをチェックし、span要素の横にテキストを表示したい。私はすでにいくつかのトピックを参照して行っているが、私は JQueryとasp.netのパラメータの欠落しているWebサービスコールが無効です

<script type="text/javascript" language="javascript" src="Scripts/jquery-1.2.6.min.js"></script> 
<script type="text/javascript" language="javascript"> 
    var $j = jQuery.noConflict(); 
    $j(document).ready(function() { 
     $j("#<%=txtusername.ClientID %>").blur(function() { 
      $j.ajax({ 
       type: "POST", 
       url: "Register.aspx/KiemTraLogin", 
       data: "{'Username':'" + $j("#<%=txtusername.ClientID %>").val() + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (message) { 
        if (message.d == false) { 
         $j("#checkReturn").css({ 
          "color": "red", 
          "font-weight": "bold", 
          "font-size": "small", 
          "padding-left": "5px" 
         }); 
         $j("#checkReturn").text("Username Exist!"); 

         $j("#btnSubmit").hide(); 
        } 
        else { 
         $j("#checkReturn").css({ 
          "color": "green", 
          "font-weight": "bold", 
          "font-size": "small", 
          "padding-left": "5px" 
         }); 
         $j("#btnInsert").show(); 
         $j("#checkReturn").text("UserName OK") 
        } 
       }, 
       error: function (errormessage) { 

        $j("#checkReturn").text(errormessage.responseText); 
       } 
      }); 
     }); 
    }); 
</script> 
はJavaScript

[System.Web.Services.WebMethod] 
public static bool KiemTraLogin(string username) 
{ 
    CommonData dt = new CommonData(); 
    bool check = false; 
    DataTable tb = dt.TruyVanTheoTenDangNhap(username); 
    if (tb.Rows.Count > 0) 
    { 
     check = false; 
    } 
    else 
     check = true; 
    return check; 
} 

の後ろのコードでは、ASPX

<asp:TextBox ID="txtusername" runat="Server" name="username" class="inputbox frontlogin"/><span id="checkReturn"></span> 

でそれ

{"Message":"Invalid web service call, missing value for parameter: \u0027username\u0027.","StackTrace":" at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary 2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target,IDictionary 2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary 2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"} *

を解決することはできません

ストア手順

ALTER Procedure [dbo].[spTB_TruyVanTheoTenDangNhap] @TenDangNhap nvarchar(50)as select Username from Accinfo where Username = @TenDangNhap 

LINQのコード事前に

public DataTable TruyVanTheoTenDangNhap(string TenDangNhap) 
{ 
    DataTable dt = new DataTable(); 

    try 
    { 
     DataSet ds = new DataSet(); 
     SqlCommand cmd = new SqlCommand("spTB_TruyVanTheoTenDangNhap"); 
     cmd.Parameters.Add(new SqlParameter("@TenDangNhap", SqlDbType.NVarChar)); 
     cmd.Parameters[0].Value = TenDangNhap; 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     da.Fill(ds); 
     dt = ds.Tables[0]; 

    } 
    catch (System.Exception ex) 
    { 

    } 

    return dt; 
} 

ありがとう!

+0

JavaScriptはページに埋め込まれているか、リソースとして読み込まれていますか? #<%= something.ClientID%>の呼び出しが機能しない可能性があります。 – Alfabravo

+0

jqueryの代わりに "{Username:Dude}"を実行してエラーを解決するかどうかを確認してください。 –

答えて

0

JSONオブジェクトを保持するローカル変数を宣言できます。次に、ブラウザの開発者ツールを使用してブレークポイントを設定し、JQueryをステップ実行します。次に、JQueryセレクターが返すものを確認してください。

var userModel = { Username: $j("#<%=txtusername.ClientID %>").val() }; 
    $j.ajax({ 
     type: "POST", 
     url: "Register.aspx/KiemTraLogin", 
     data: userModel, 
     contentType: "application/json; charset=utf-8", 
関連する問題