无法使用Ajax

时间:2018-02-17 18:53:20

标签: ajax asp.net-mvc model-view-controller

这是我的JS(jQuery和Ajax)代码:

    $('#submitSignUp').click(function () {
    var name = $('#name').val();
    var email = $('#email').val();
    var password = $('#password').val();
    $.ajax({
        url: '@Url.Action("SignUp")',
        type: "POST",
        contentType: 'application/json; charset=utf-8',
        dataType: "json",
        data: JSON.stringify({ name: name, email: email, password: password }),
        success: function () {
            alert("Rgistered.");
        }
    })
})

这是我的行动方法。 (它在“家庭控制器”中):

        [HttpPost]
    public JsonResult SignUp(string name, string email, string password)
    {
        TodoNet.Models.TodonetModel database = new TodoNet.Models.TodonetModel();
        TodoNet.Models.User oUser = new TodoNet.Models.User()
        {
            FirstName = name,
            LastName = name,
            Email = email,
            Password = password,
            Salt = password,
            IsDeleted = false,
            IsOnline = false,
            PhoneNumber = "09212131212",
            RegisterDate = DateTime.Now,
            LastLoginDate = DateTime.Now
        };
        database.Users.Add(oUser);
        database.SaveChanges();
        return new JsonResult();
    }

但我不知道为什么它不起作用。点击“#signUpSubmit”按钮后,“alert(”Registered。“)”将不会显示。 我做错了什么?

注意:不使用Ajax,(通过使用普通的发送表单数据到action方法,一切正常(这意味着我知道后端代码没有任何问题)

3 个答案:

答案 0 :(得分:1)

如果表单正常提交,那么你的ajax应该发送表单数据而不是json 另外,请阻止按钮单击的默认操作。

$('#submitSignUp').click(function (e) {
    e.preventDefault();
    $.ajax({
        url: '@Url.Action("SignUp")',
        type: "POST",
        dataType: "json",
        data: $("#the_form_id").serialize(),
        success: function () {
            alert("Rgistered.");
        }
    });
});

答案 1 :(得分:0)

您也可以这样做。

submitSignUp提交您的参数,如下所示。

 var param = 
 {
    name: $('#name').val(),
    email: $('#email').val(),
    password: $('#password').val()
 };
 $.ajax({
        url: '@Url.Action("SignUp")',
        type: "POST",
        dataType: 'json',
        data: JSON.stringify(param),
        async: false,
        cache: false,
        traditional: true,
        contentType: 'application/json',
        success: function (data) {
            alert(1)
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            //alert(errorThrown);
            return false;
        }
    });

更改您的控制器:

[HttpPost]
public ActionResult SignUp(string name, string email, string password)
{
  //other implementation
  return Json("", JsonRequestBehavior.AllowGet);
}

希望这有帮助!

答案 2 :(得分:0)

尝试将此作为您的Ajax方法-

let url = String(format: "%@?client_id=%@&redirect_url=%@&response_type=token&scope=%@&DEBUG=True", arguments: [INSTAGRAM_IDS.AUTHURL,INSTAGRAM_IDS.CLIENTID,INSTAGRAM_IDS.REDIRECTURL,INSTAGRAM_IDS.SCOPE])