2017-11-22 11 views
-1

私はASP.Net MVCを初めて使用しており、アプリケーションにAJAXを使用してデータを挿入しようとしています。データはデータベースに挿入されますが、AJAX関数は成功関数には入りません。私は、データが保存されるとき、それはあなたが成功する関数が表示するための指標を提供ASP.Net MVCでAJAXを使用してデータを挿入する

[HttpPost] 
public ActionResult insert(TestCrudViewModel vm) 
{ 
    TestCrud ts = new TestCrud(); 
    ts.FirstName = vm.FirstNameVm; 
    ts.LastName = vm.LastNameVm; 
    ts.DOB = vm.DOBVm; 
    ts.Mobile = vm.MobileVm; 
    db.TestCruds.Add(ts); 
    db.SaveChanges(); 
    return View("index"); 
} 

が機能しない理由である方法を投稿するビューを提供することはできません警告

var Insert = function() 
{ 
    debugger 
    var data = $("#form").serialize(); 
    $.ajax({ 
    type: "POST", 
    url: "/Main/insert", 
    data: data, 
    success: function (data) { 
     debugger; 
     alert("success"); 
     window.location.href = "/Main/ViewList"; 
    } 
    }); 
} 
[HttpGet] 
public ActionResult Index() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult insert(TestCrudViewModel vm) 
{ 
    TestCrud ts = new TestCrud(); 
    ts.FirstName = vm.FirstNameVm; 
    ts.LastName = vm.LastNameVm; 
    ts.DOB = vm.DOBVm; 
    ts.Mobile = vm.MobileVm; 
    db.TestCruds.Add(ts); 
    db.SaveChanges(); 
    return View(); 
} 
+3

AJAXの全体のポイントは、** **同じページ上に滞在することです。 ajaxを呼び出してリダイレクトするために 'location.href'を使うのは無意味です。特に、あなたが使っていないクライアントにもビューを返すことで、あなたのアプリケーションのパフォーマンスが低下してしまったときです。スクリプトを削除し、POSTメソッドで通常の送信とリダイレクトを行います。 –

+0

'jQuery.ajax'はページ間でリダイレクトするようには設計されていませんが、リダイレクト以外の部分的なビューを別のアクションに読み込むことがよくあります。 'Html.BeginForm(" insert "、" Main "、FormMethod.Post)'や 'RedirectToAction(" ViewList "、" Main ")'のような通常のフォーム提出を使用してください。 –

+0

脇にリダイレクトすると、このコードがエラーを引き起こす理由は数多くありますが、データストレージロジックと関係している可能性があります。これをデバッグするには、AJAXリクエストを行った後でコンソールを開き、ネットワークタブでエラーをチェックします。リクエストをクリックすると、応答が表示されます。うまくいけば、問題をデバッグするのに役立つエラーメッセージや例外メッセージがあるはずです。 –

答えて

0

を示してほしいです。

+1

ありがとうございました。 –

+1

_表示する方法を表示するには表示できません - そのステートメントは間違っています。本当の理由は、OPには 'insert.cshtml'という名前のビューがありません。 –

+0

Stephen Muecke:そうです。 –

0
function AjaxRequest(url, type, data, async, cache, successCallBack) { 
    type == null ? 'post' : 'get', 
    async == null ? true : false; 
    cache == null ? false : true; 
    $.ajax({ 
     url: url, 
     type: type, 
     data: data, 
     async: async, 
     cache: cache, 
     success: successCallBack, 
     error: function (xhr) { 
     } 
    }); 
}; 
//Write code in js file against btn click 
var save = function() { 
    if (validationCheck()) { 
     var checked; 
    if ($("#chkIsSpecial").is(":checked")) { 
     checked = true; 
     } else { 
      checked = false; 
     } 
     var userRole = { 
      RoleId: $('#UserRoleID').val(), 
      RoleName: $('#UserRoleName').val(), 
      IsSpecial: checked 
       }; 
       var data = userRole; 
       AjaxRequest('/ControllerName/Save', 'post', data, false, false, function(res) { 
        window.ShowNotification(res.MessageType,res.CurrentMessage); 
        if (res.MessageType == 1) { 
         ("Success Message") 
        } 
       }); 

      } 

    }; 

コントローラ

公共のActionResult保存(パラメータ) {

}

関連する問題