2017-11-23 8 views
0

電子メールを持つフィールドを持つ値を返すためにこのSQLクエリを使用するNet MVCコントローラ。 電子メールがクエリによって渡されて読み込まれていますが、値がJsonを使用したビューで転送されていません。ASP.Net MVC - Jquery Returning undefined

これは私のコントローラのコードです:

[HttpGet] 
public JsonResult hhhhhh(string email) 
{ 

    SqlConnection cn = new SqlConnection(@"Data Source=Example;Initial Catalog=Example;User ID=example;Password=example;"); 
    SqlCommand cmd = new SqlCommand("SELECT anr.Name FROM AspNetUsers anu " + 
            "LEFT JOIN AspNetUserRoles anur ON (anur.UserId = anu.Id) " + 
            "LEFT JOIN AspNetRoles anr ON (anr.Id = anur.RoleId) " + 
            "WHERE anu.Email = '" + email + "'", cn); 


    cn.Open(); 
    cmd.ExecuteNonQuery(); 


    return Json(cmd, JsonRequestBehavior.AllowGet); 

} 

は、これは私のビューです:

<script> 
$(document).ready(function() { 
     var str = '@User.Identity.GetUserName()'; //returns the current email 
     $.getJSON("/Student/hhhhhh", { 
     email: str 
     }, function(data) { 
     alert(data.cmd) 
     if (data == "Admin") { 
      alert("asddsadas"); 
     } else { 
      alert("n deu"); 
     } 
     /* if (data = "Admin") { 
     alert("DEUEUEUEUEU"); 
     } 
     else { 
     alert("ndeu"); 
     }*/ 

     }); 

</script> 

これは私に未定義の値を返しています。 皆さんはエラーを特定できますか?

+2

あなたは、'は、ExecuteNonQueryを使用している() ':あなたが直接あなたが辞書またはオブジェクトのリストを必要とするJsonResultにSqlCommandオブジェクトを渡すことはできません、このコードを試してみてください。代わりに 'ExecuteReader()'を試して、その結果をコマンドではなく必要な形式で返します。以下の「クエリデータ」セクションを参照してください。http://csharp-station.com/Tutorial/AdoDotNet/Lesson03 –

答えて

0

使用

$getjson(
// Send data from here 
).done(
// On success whatever you want to do 
).fail(
// On fail whatever you want to do 
) 

はあなたの要求は失敗しました取得される可能性があります。 getjsonを使用すると、要求がどこに行き渡っているかを正確にチェックすることができます。

0

ExecuteNonQuery を削除...あなたはExecuteReaderを使用してDataReader対象として検索結果を取得する必要があり、選択クエリを実行したい場合は、また、更新、挿入などの任意のデータを返さないクエリのために使用されることを想定しています間違っている `SELECT`文で

[HttpGet] 
public JsonResult hhhhhh(string email) 
{ 
    string connectionString = @"Data Source=Example;Initial Catalog=Example;User ID=example;Password=example;"; 

    // note the 'using' statement 
    using(SqlConnection connection = new SqlConnection(connectionString)) { 

     string query = "SELECT anr.Name FROM AspNetUsers anu " + 
         "LEFT JOIN AspNetUserRoles anur ON (anur.UserId = anu.Id) " + 
         "LEFT JOIN AspNetRoles anr ON (anr.Id = anur.RoleId) " + 
         "WHERE anu.Email = @email"; 

     SqlCommand command = new SqlCommand(query, connection); 
     // note how to pass parameter to SqlCommand object 
     command.Parameters.Add("@email", SqlDbType.NVarChar, 50); 
     command.Parameters["@email"].Value = email; 

     connection.Open(); 

     // We can use a Dictionary for example to produce json result 
     var dict = new Dictionary<string, object>(); 

     using(SqlDataReader reader = command.ExecuteReader()) { 

      while (reader.Read()) { 

       for (i = 0; i < reader.FieldCount; i++) { 
        dict.Add(reader.GetName(i), reader.GetValue(i)); 
       } 

      } 

     } 

     return Json(dict, JsonRequestBehavior.AllowGet); 
    } 

} 
関連する問題