如何将变量从ajax解析为控制器并返回bool

时间:2011-08-18 06:05:59

标签: jquery asp.net-mvc ajax asp.net-mvc-3

我想要解析两个字符串(只测试一个atm(从一个日期选择器中获取日期,从两个文本字段中计算小时和分钟。但是我无法弄清楚如何从我的ajax调用中解析数据到我调用的方法,我知道它被调用,因为我检查了一个断点,但它的参数只是null。

我的阿贾克斯:

$('.datein').change(function () {
    alert("datein changed");
    //send servervalidering ajax
    var result = false;
    $.ajax({ url: "Resource/isDateValid/",
            data: ($('#resource_datein').val() + "-" + $('#resource_hourin').val() + "-" + $('#resource_minutein').val()),
        type: "POST",
        sucess: ajaxsuccess(result)
    }
    );
});

我的方法呼吁成功

function ajaxsuccess(result) {
    alert("ajax lykkes!" + result);
}

控制器方法是公共类ResourceController:DataTablesController

的一部分
    [HttpPost]
    public bool isDateValid(string dateIn)
    {

        return true;
    }

string dateIn如果我设置了日期,则返回null

1 个答案:

答案 0 :(得分:1)

尝试类似

的内容
//js

var data = $("myform").serialize(); //Might be serializeArray() not on dev machine sorry

$.post("Resource/isDateValid/", data, function(data){
   alert(data.Success);
}, "json");

控制器(假设资源是一个类,因为ids中有下划线...)

[HttpPost]
public JsonResult(Resource resource) //or (DateTime resource_datein, int resource_hourin)
{
    bool success = true;

    //Do something with posted data

    return Json(new { Success = success});
}
编辑(评论)

从$ .post

中取消AjaxSuccess函数调用中的()
$('.datein').change(function () {
            //send servervalidering ajax
            var data = $(".datein").serialize();
            $.post("Resource/isDateValid", data, ajaxsuccess, "text");
        });

function ajaxsuccess(data)
{
   alert(data.Success); // in your case alert(data); because it's "text"?
}

还因为您没有序列化整个表单,您的数据应该是:

var data = {dateIn : $(".datein").val()};