2017-06-04 2 views
0

ここにコードがあります Jquery Ajaxを使用して、あるページから別のページへのデータを に与えています。データを与えている間は打つことはありません。 Web Apiコントローラがポストリクエスト中にヒットしない

$("#button").click(function() { 
      var test = $("#name").val(); 
      var test1 = $("#username").val(); 
      var test2 = $("#email").val(); 
      var test3 = $("#pwd").val(); 
      var data1 = { 
       name: test, 
       username: test1, 
       email: test2, 
       password:test3 
      } 
      alert("the value is" + test + "" + test1 + "" + test2 + "" + test3); 
      $.ajax({ 
       type: 'POST', 
       url: 'http://localhost:54150/api/Login', 
       data:data1, 
       contentType: 'application/json;charset=utf-8', 
       success: function (result) { 
        alert('Data Saved Successfully'); 
       }, 
       error: function() { 
        alert("Bad...Really bad"); 
       } 
      }); 
     }); 

、私のコントローラのコードを確認してくださいと あなたのルーティングを

+0

てみてください以下のようにルーティング属性を使用することができ、それがヒットした場合、loginmodelはNULLとして出てくるはずです。また、Loginクラス構造を公開する – Gururaj

答えて

1

が問題に思えるバグを見つけてくださいjQueryのAjaxの から呼び出されたとき、それは当たっていない

using System; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http; 
using System.Web.Mvc; 
using System.Web.UI.WebControls; 
using AbiApp.Models; 

namespace AbiApp.Controllers 
{ 
    public class LoginController : ApiController 
    { 
     String connStr = System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString; 
     [System.Web.Http.AcceptVerbs("GET", "POST")] 
     [System.Web.Http.HttpPost] 

     public void Post([FromBody]login loginmodel) 
     { 
      try 
      { 
       using (SqlConnection df = new SqlConnection(connStr)) 
       { 
        using (SqlCommand de = new SqlCommand()) 
        { 
         de.CommandType = System.Data.CommandType.StoredProcedure; 
         de.CommandText = "StoreImageDetails"; 
         de.Connection = df; 
         de.Parameters.Add(new SqlParameter("@name", loginmodel.name)); 
         de.Parameters.Add(new SqlParameter("@username", loginmodel.username)); 
         de.Parameters.Add(new SqlParameter("@email", loginmodel.email)); 
         de.Parameters.Add(new SqlParameter("@password", loginmodel.password)); 
         df.Open(); 
         var dt = de.ExecuteNonQuery(); 
        } 
       } 
      } 
      catch (Exception ed) 
      { 
       //ed+Message;  
      } 
     } 
    } 
} 

。あなたは

[System.Web.Http.AcceptVerbs("GET", "POST")]

を削除し、Ajax呼び出しからデータを削除することによって

[Route("api/Login")] 
public void Post([FromBody]login loginmodel) 
     { 
      try 
      { 
       using (SqlConnection df = new SqlConnection(connStr)) 
       { 
        using (SqlCommand de = new SqlCommand()) 
        { 
         de.CommandType = System.Data.CommandType.StoredProcedure; 
         de.CommandText = "StoreImageDetails"; 
         de.Connection = df; 
         de.Parameters.Add(new SqlParameter("@name", loginmodel.name)); 
         de.Parameters.Add(new SqlParameter("@username", loginmodel.username)); 
         de.Parameters.Add(new SqlParameter("@email", loginmodel.email)); 
         de.Parameters.Add(new SqlParameter("@password", loginmodel.password)); 
         df.Open(); 
         var dt = de.ExecuteNonQuery(); 
        } 
       } 
      } 
      catch (Exception ed) 
      { 
       //ed+Message;  
      } 
     } 
関連する問題