2014-12-09 4 views
0

По какой-то причине эта программа AJAX не принимает мой объект json.Бэкэнд не принимает мой объект JSON

У меня есть файл mdf, к которому обращается registerdb, что я уверен, что это правильно.

Имеет 3 столбца: идентификаторы, имя пользователя и пароль, заполненные данными.

Любая помощь будет оценена по достоинству.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#<%= btn.ClientID %>").click(function() { 
      var User = $("#<%= txtuser.ClientID %>").val(); 
      var Pass = $("#<%= txtpass.ClientID %>").val(); 
      var data = "{ Username: " + User + ", Password: " + Pass + " }" 
      var json1 = JSON.stringify(data); 
      $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: "Default.aspx/Login", 
       data: json1, 
       dataType: "json", 
       success: function (result) { 
        $("#<%= txtid.ClientID %>").val(result.d); 
       }, 
       error: function (Msg) { 
        $("#<%= lblError.ClientID %>").text('failed:' + Msg.status + ':' + Msg.responseText); 

       } 
      }); return false; 
     }); 
    }); 
</script> 

Default.aspx.cs

[System.Web.Services.WebMethod] 
public static string Login(string Username,string Password) 
{ 
    string ids=""; 
    string connStr = ConfigurationManager.ConnectionStrings["registerdb"].ConnectionString; 
    string cmdStr = "SELECT [ids] FROM [register] WHERE [username][email protected] AND [password][email protected];"; 
    try 
    { 
     using (SqlConnection conn = new SqlConnection(connStr)) 
     { 
      using (SqlCommand cmd = new SqlCommand(cmdStr, conn)) 
      { 
       conn.Open(); 
       cmd.Parameters.AddWithValue("@username", Username); 
       cmd.Parameters.AddWithValue("@password", Password); 
       using (SqlDataReader rdr = cmd.ExecuteReader()) 
       { 
        if (rdr.Read()) 
        { 
         ids = rdr[0].ToString(); 
        } 
       } 
       if (ids == "") { ids = "No Match"; }; 
       conn.Close(); 
       cmd.Dispose(); 
       conn.Dispose(); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.ToString()); 
    } 
    return ids; 
} 

Код ошибки:

не удалось: 500: { "Сообщение": "Не удается преобразовать объект типа \ u0027System.String \ u0027 к type \ u0027System.Collections.Generic.IDictionary`2 [System.String, System.Object] \ u0027 "," StackTrace ":" в System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal (Object o, Тип типа, JavaScriptSerializer serializer , Boolean throwOnError, Object \ u0026 convertObject) \ r \ n в System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain (Object o, Тип типа, JavaScriptSerializer serializer, Boolean throwOnError, Object \ u0026 convertObject) \ r \ n в System.Web.Script.Serialization.JavaScriptSerializer. Deserialize (сериализатор JavaScriptSerializer, ввод строки, тип типа, Int32 depthLimit) \ r \ n в System.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T] (ввод строки) \ r \ n в System.Web.Script.Services. RestHandler.GetRawParamsFromPostRequest (контекст HttpContext, сериализатор JavaScriptSerializer) \ r \ n в System.Web.Script.Services.RestHandler.GetRawParams (метод WebServiceMethodDataData, контекст HttpContext) \ r \ n в System.Web.Script.Services.RestHandler.ExecuteWebServiceCall (HttpContext, WebServiceMethodData methodData) "," ExceptionType ":" System.InvalidOperationException "}

ответ

0

Ваша проблема в том, что данные, которые вы передаете в JSON.stringify, являются строкой, а не объектом JSON. Вот как вы должны это делать:

var data = {Username:User, Password:Pass}; 
var json1 = JSON.stringify(data); 
Смежные вопросы