Ajax发布未从MVC控制器接收JSON

时间:2019-02-27 18:15:51

标签: jquery ajax post model-view-controller controller

我的javacript看起来像这样:

namespace ContactPage {
$(() => {

    //contact info
    let $firstName = $('#first-name'), $lastName = $('#last-name'), $email = $('#email');
    //form
    let $form = $('#main-form');
    $form.submit(() => {
        let data = $form.serialize();
        var post = $.post('/contact', data, function () {
            console.log('posted');
        });

        post.done(function (data) {
            console.log('done', data);
        })
        .fail(function (data) {
            console.log('fail', data);
        })
        .always(function (data) {
            console.log('always', data);
        });
    });
});

}

MVC .net C#控制器成功接收到数据(如下所示的代码),但是javascript不等待响应,浏览器最终显示Json。我想念什么?

    [HttpPost]
    public ActionResult Index(ContactModel model)
    {
        var cl = seretContext.ContactLogs.Create();

        cl.Email = model.email;
        cl.Comment = model.message;

        seretContext.Set<ContactLog>().Add(cl);
        seretContext.SaveChanges();

        return Json(new { redirectTo = "/" });
    }

cshtml具有一个提交按钮,如下所示:

<div class="text-center">
                <button id="orderForm" class="btn btn-success btn-lg" type="submit" >Send</button>
            </div>

浏览器立即显示原始Json ...而不是接收Json,以便可以对其进行处理。

浏览器显示 {“ redirectTo”:“ /”}

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的方法来捕获所有可能的结果吗?

var post = $.post('/contact', function(){
    console.log('posted');
});

post.done(function(data) {
    console.log('done', data);
})
.fail(function(data) {
    console.log('fail', data);
})
.always(function(data) {
    console.log('always', data);
});

答案 1 :(得分:0)

结果是一个非常愚蠢的错误-我很抱歉-表单的ID拼写错误,因此javascript甚至没有得到该表单。