在mvc中使用ajax调用控制器

时间:2016-02-05 10:18:22

标签: javascript jquery ajax asp.net-mvc

我正在尝试从控制器获取数据并使用ajax更新我的视图。

这是我的控制者:

public class PatientController
{
    DatabaseContext db = new DatabaseContext();
    public JsonResult GetPatientFromCpr()
    {
        var patient = db.Patients.FirstOrDefault(p => p.Cpr == "2410911615");
        return new JsonResult() { Data = patient, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    } 
}

这是我的ajax电话:

    function getPatient() {
    cpr2 = $("#cpr-first").val() + $("#cpr-last").val();
    $.ajax(
    {
        url: '/Patient/GetPatientFromCpr',
        dataType: 'json',
        success: function () {
            alert("success");
        },
        error: function () {
            alert("error");
        },
    });
}

当我调用该函数时,我总是收到错误提示。

GET http://localhost:51140/Patient/GetPatientFromCpr 404 (Not Found)

有人可以指出什么是错的吗?

(编辑) 添加“:Controller”后,我现在收到一个新错误

GET http://localhost:51140/Patient/GetPatientFromCpr 500 (Internal Server Error)

3 个答案:

答案 0 :(得分:1)

您的患者控制器'不是Controller(它不会从Controller继承)

public class PatientController : Controller
{
   ....
}

答案 1 :(得分:0)

使用PatientController

继承Base Controller Class
public class PatientController : Controller

在控制器中

 public JsonResult GetPatientFromCpr()
    {
        var patient = db.Patients.where(p => p.Cpr == "2410911615").FirstOrDefault();
        return new JsonResult() { Data = patient, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    } 

并指定调用ajax的类型

type: "POST" or type: "GET" ....

这将帮助您修复错误

答案 2 :(得分:0)

尝试使用此功能,可能会有效.. !!

查看:

function getPatient() {
    cpr2 = $("#cpr-first").val() + $("#cpr-last").val();
    $.ajax(
    {
        url: '/Patient/GetPatientFromCpr',
        //dataType: 'json',
        type:"POST", // GET or POST
        success: function () {
            alert("success");
        },
        error: function () {
            alert("error");
        },
    });
}

控制器:

public class PatientController : Controller
{
   ....
}