.NET MVC - Ajax POST不调用.Net MVC方法

问题描述 投票:1回答:3

我是.NET MVC的新手。我正在尝试对.NET方法进行Ajax调用,但它不起作用。请帮忙。

这是我的Ajax代码:

function resendConfirmationEmail()
{
    $("#resend-confirmation-email-status").html('<img src="../../Content/img/ajax-loader.gif" />');
    $.ajax({
        url: "/Ultility/ResendConfirmationEmail",
        type: "POST",
        datatype: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({ "userID": $('#confirmation-email-userid').text().toString(), "subject": $('#confirmation-email-subject').text().toString() }),
        async: true,
        processData: true,
        cache: false,
        success: function (data) {
            $("#resend-confirmation-email-status").html("Email sent");
        }
    });
}

这是我在UtilityController中的.Net方法:

[HttpPost]
[WebMethod]
public JsonResult ResendConfirmationEmail(string userID, string subject)
{
    string destination = db.Users.Where(u => u.Id == userID).Select(u => u.Email).FirstOrDefault();
    Task<string> result = new AccountController().SendEmailConfirmationTokenAsync(userID, subject, destination);
    return Json(result, JsonRequestBehavior.DenyGet);
}
asp.net-mvc asp.net-mvc-4
3个回答
2
投票

尝试删除ajax请求的数据参数中的引号

像这样:

function resendConfirmationEmail()
{
    $("#resend-confirmation-email-status").html('<img src="../../Content/img/ajax-loader.gif" />');
    $.ajax({
        url: "/Ultility/ResendConfirmationEmail",
        type: "POST",
        datatype: "json",
        contentType: "application/json; charset=utf-8",
        data: 
             JSON.stringify({ 
               userID: $('#confirmation-email-userid').text().toString(),
               subject: $('#confirmation-email-subject').text().toString() 
             }),
        async: true,
        processData: true,
        cache: false,
        success: function (data) {
            $("#resend-confirmation-email-status").html("Email sent");
        }
    });
}

1
投票

试试这个,但是如果你使用asp.net mvc,我想你不需要[WebMethod]属性

    [HttpPost]
    [WebMethod]
public JsonResult ResendConfirmationEmail([FromBody] MyModel model)
{
  ....
}

public class MyModel{
   public string userID {get; set;}
   public string string subject {get; set;}
}

0
投票

我认为你的网址问题在哪里使用“url:”/ Utility / ResendConfirmationEmail“,”而不是“url:”/ Utility / ResendConfirmationEmail“,”

因为您的控制器名称是UtilityController

© www.soinside.com 2019 - 2024. All rights reserved.