从Ajax调用MVC返回bool

时间:2015-10-20 19:18:02

标签: javascript ajax asp.net-mvc

我在控制器中对MVC ActionResult进行了AJAX调用,试图返回一个bool。

我的ajax电话:

function CheckForExistingTaxId() {
    $.ajax({
        url: "/clients/hasDuplicateTaxId",
        type: "GET",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        data: JSON.stringify({ taxId: taxId }),
    });
}

我的方法:(“clients”是默认路由前缀)

[HttpGet, Route("hasDuplicateTaxId")]
    public ActionResult hasDuplicateTaxId(string taxId)
    {
        //if stuff
            return Json(true, JsonRequestBehavior.AllowGet);
        else
            return Json(false, JsonRequestBehavior.AllowGet);
    }

我想根据ajax调用的结果打开一个模态对话框:

    if (CheckForExistingTaxId())
        DialogOpen();

第一个问题是我收到了404 Not Found for clients / hasDuplicateTaxId。 我的路线或我打电话的方式有问题吗? 其次,我能以这种方式返回一个布尔值,在打开对话框之前使用ajax调用来评估函数CheckForExistingTaxId()吗?

1 个答案:

答案 0 :(得分:4)

基本上如果想要将Json与HttpGet一起使用:

    [HttpGet, Route("hasDuplicateTaxId")]
        public ActionResult hasDuplicateTaxId(string taxId)
        {
           // if 1 < 2
           return 1 < 2 ? Json(new { success = true }, JsonRequestBehavior.AllowGet) 
                        : Json(new { success = false, ex = "something was invalid" }, JsonRequestBehavior.AllowGet);
        }

AJAX:

function CheckForExistingTaxId() {
    $.ajax({
        url: "/clients/hasDuplicateTaxId",
        type: "GET",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        data: JSON.stringify({ taxId: taxId }),
        success: function (data) {
            if (data.success) {
               // server returns true
            } else {
               // server returns false
               alert(data.ex); // alert error message
            }
        }
    });
}