按钮上显示JSON结果单击ASP.NET MVC

时间:2014-06-02 21:29:38

标签: javascript jquery asp.net asp.net-mvc

嗨,我的控制器中有这个代码:

  [HttpPost]
    public JsonResult CalculateAndSaveToDB(BMICalculation CalculateModel)
    {
        if (ModelState.IsValid)
        {
            CalculateModel.Id = User.Identity.GetUserId();
            CalculateModel.Date = System.DateTime.Now;
            CalculateModel.BMICalc = CalculateModel.CalculateMyBMI(CalculateModel.Weight, CalculateModel.Height);
            CalculateModel.BMIMeaning = CalculateModel.BMIInfo(CalculateModel.BMICalc);
            db.BMICalculations.Add(CalculateModel);
            db.SaveChanges();
        }

        return Json(new {CalculatedBMI = CalculateModel.BMICalc.ToString(), CalculatedBMIMeaning = CalculateModel.BMIMeaning.ToString() }, JsonRequestBehavior.AllowGet);
    }

我想使用此JavaScript在页面上显示CalculatedModel.BMICalc和CalculatedModel.BMIMeaning:

$('#good').click(function () {
    var request = new BMICalculation();
    $.ajax({
        url: "CalculateAndSaveToDB",
        dataType: 'json',
        contentType: "application/json",
        type: "POST",
        data: JSON.stringify(request),
        success: function (response) {
            var div = $('#ajaxDiv');
            div.html("<br/> " + "<b>" + "Your BMI Calculations: " + "</b>");
            printBMI(div, response);
        },
    });
});

function printBMI(div, data) {
    div.append("<br/>" + "You are " + response.CalculatedBMI + ".");
    div.append("<br/>" + "You exact BMI is: " + response.CalculatedBMIMeaning + ".");
};

当我点击按钮时,没有任何反应。表单中的正确数据正确进入数据库。我的Chrome调试器说,但是找不到CalculateAndSaveToDB 404错误。请帮忙。

2 个答案:

答案 0 :(得分:0)

尝试在点击功能结束时返回false。

$('#good').click(function () {
  //Your code      
  return false;    
});

此外,我可以在printBMI函数中看到错误。没有引用变量&#34;响应&#34;。它应该是&#34;数据&#34;

function printBMI(div, data) {
  div.append("<br/>" + "You are " + data.CalculatedBMI + ".");
  div.append("<br/>" + "You exact BMI is: " + data.CalculatedBMIMeaning + ".");
};

答案 1 :(得分:0)

可能存在一些问题:

  1. 您的路由不正确,无法调用后期操作。我没有看到任何有关路由的信息,所以这可能是个问题。

  2. 正如PraveeReddy建议的那样,你不会返回假。如果您不这样做,浏览器会按照您的按钮链接。

  3. 只是一个提示:在这种简单的场景中,使用$ .load更容易:http://api.jquery.com/load/