$ .ajax方法不调用控制器操作方法

时间:2014-06-06 07:48:14

标签: javascript jquery ajax asp.net-mvc

我在@Html.ActionLink点击的活动上调用了javascript函数。 Javascript函数调用jquery函数,我在其中编写了用于调用json控制器方法的$.ajax方法。但它没有调用控制器方法.......

这是我的代码:

查看

@Html.ActionLink("Submit", "AdminEvaluate", "Application", new { onclick = "Show('" + Model.applicationList.ApplicationId + "','statusList')" })|

此处,ApplicationId来自数据库,statusList是单选按钮组名称,我需要找到所选单选按钮。

Javascipt和jQuery代码

function Show(appId, appStatus) {
    $.fn.gotof(appId,appStatus);
}

从视图获取参数并传递给jQuery函数

jQuery功能

$(document).ready(function () {
    $.fn.gotof = function (appId, appStatus) {
        var selectedItem = $("input[name='" + appStatus + "']:checked").val();  
        $.ajax({
            url: '/Application/UpdateApplicantStatus',
            data: { id: appId , status: selectedItem},
            traditional: true,
            dataType: "json",
            contentType: "application/json",
            success: function (data) {
                alert(data);
            }
        });
    });

控制器方法

public JsonResult UpdateApplicantStatus(int id, string status){
    return Json("Correct", JsonRequestBehavior.AllowGet);
}   

我已经在控制器方法上设置了断点,但它没有达到断点。

先谢谢。

5 个答案:

答案 0 :(得分:3)

可能是这个样本帮助你:)让我知道

ajax调用类型:

 $.ajax({
            type: "GET",
            url: '@Url.Action("UpdateApplicantStatus", "Application")',
            contentType: "application/json; charset=utf-8",
            data: { id: appId , status: selectedItem },
            dataType: "json",
            success: function() { alert('Success'); }

            });

控制器:

public ActionResult UpdateApplicantStatus(int id, string status){
    return Json(// blah blah blah ...
}  

这应该可以让我知道

答案 1 :(得分:1)

您的ajax通话错误。

如果您的控制器方法签名是

public JsonResult UpdateApplicantStatus(int id, string appStatus)

然后你必须有一个参数名称与你的ajax调用参数匹配 所以,而不是

data: { id: appId , status: selectedItem}

只需写下

data: { id: appId , appStatus: selectedItem}

如果您有任何其他问题,请在浏览器的控制台中发布您应该提供的错误。

答案 2 :(得分:0)

控制器函数和ajax调用函数的参数名称应匹配。

你可以试试这个

data:{id:appId,appStatus:selectedItem},

答案 3 :(得分:0)

这样做实际上3个错误1是由@Mr代码通知类型缺失第2个你的参数不匹配,因为你的函数需要你以错误格式发送数据...

$(document).ready(function () {
    $.fn.gotof = function (appId, appStatus) {
        var selectedItem = $("input[name='" + appStatus + "']:checked").val();  
        $.ajax({
            url: '/ApplicationController/UpdateApplicantStatus',
data:"{'id':'" + appId + "', 'appStatus': '" + selectedItem+ "'}",//here you format is wrong i correct it
            traditional: true,
            dataType: "json",
            contentType: "application/json",
            success: function (data) {
                alert(data);
            }
        });
    });

答案 4 :(得分:0)

坐了几个小时:

nullptr

如果脚本是在HTML页面中编写的,则必须使用

When using ajax - json in a js.script file:

the url is written with its real path e.g. -  url: '/contoller/Action',


                                $.ajax({
                                   url: '/NextPage/GetSpDropDown',                                      
                                   data: {'segInputVal': segInputVal}, 
                                    cache: false, 
                                    type: "GET",
                                    dataType: "json",
                                    success: function (result) {
                                     if (result.Success) {
                                     var resultArray = result.Result;.....

并且不要忘记不要在控制器名称中包含单词controller。

我从stackoverflow得到了很多帮助 - 希望稍微支付一下