【问题标题】:Calling controller with ajax in mvc在 mvc 中使用 ajax 调用控制器
【发布时间】:2016-02-05 10:18:22
【问题描述】:

我正在尝试从控制器获取数据并使用 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)

谁能指出问题所在?

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

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

【问题讨论】:

  • 类型在哪里,在url调用后添加type:"Get"
  • 网址看起来正确。当您在地址栏中输入并导航到它时会发生什么?您在使用区域吗?
  • @SrinivasR,默认是'GET'
  • 能分享一下路线吗
  • @StephenMuecke 输入时我得到 404。地区?

标签: javascript jquery ajax asp.net-mvc


【解决方案1】:

您的“PatientController”不是Controller(它不继承自Controller

public class PatientController : Controller
{
   ....
}

【讨论】:

  • 哇,我真笨。谢谢,但它没有解决我的错误(嗯,它一定是修复了一些东西)
  • 你是说你还在得到404 Not Found吗?
  • 啊,你是对的.. GET localhost:51140/Patient/GetPatientFromCpr 500(内部服务器错误)
  • 那么这意味着您的服务器代码正在抛出异常 - 您需要调试代码(并且您可以使用浏览器工具检查响应和错误详细信息(网络选项卡)。请撤消您的编辑问题 - 或者我会 - 你不能只根据正确答案更改问题(让我的答案毫无意义)
  • @Smit。不! OP 正在发回 JsonResult,所以它需要是 dataType: 'json',它是一个 GET 方法,所以它需要是 type: 'get',但这是默认值,因此可以省略。
【解决方案2】:

Base Controller Class继承你PatientController

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" ....

这将帮助您修复错误

【讨论】:

  • 感谢您的回复,但已经回复。我现在收到一个新错误 (500)。
【解决方案3】:

尝试使用这个,也许这行得通..!!

查看:

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
{
   ....
}

【讨论】:

    猜你喜欢
    • 2015-01-16
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2012-04-16
    • 2015-10-08
    相关资源
    最近更新 更多