Ajax发布并从mvc控制器获取

时间:2015-02-18 15:46:24

标签: jquery ajax asp.net-mvc

我想要做的就是将一个邮政编码发布到控制器,对邮政编码做一些事情,然后将更改发回邮政编码。但是我的参数a总是为空。谁能告诉我我做错了什么?

这是我的代码:

查看:

<input type="text" id="zipcode" />

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        var serviceURL = '/Employer/employer/index';
        var zipcode = $("#zipcode").val();

        $("#zipcode").blur(function () {
            $.ajax({
        type: "POST",
        url: serviceURL,
        data: {'a':zipcode},
        contentType: "application/json; charset=utf-8",
        success: successFunc,
        error: errorFunc
    });

    function successFunc(data, status) {
        alert(data);
    }

    function errorFunc() {
        alert('error');
    }
    });
    });

控制器:

public ViewResult Index()
{
    return View();
}
[HttpPost]
public ActionResult Index(string a)
{
    return Json("test", JsonRequestBehavior.AllowGet);

}

2 个答案:

答案 0 :(得分:4)

请注意,在用户有机会与之交互之前,您将zipcode值存储在document.ready处理程序中的变量中。您应该在模糊处理程序中执行此操作,以确保获取实际值:

$("#zipcode").blur(function () {
    var zipcode = $("#zipcode").val();
    $.ajax({

答案 1 :(得分:1)

首先,您在页面中包含两个版本的jQuery,我强烈建议您删除一个版本。如果您想支持IE9,请使用1.9;如果您不支持旧浏览器,请使用2.0 +。

此外,当jQuery序列化data时,如果它不一定以JSON格式发送,那么contentType: "application/json; charset=utf-8"设置可能会混淆MVC模型绑定器,将其删除。

最后,请注意zipcode仅在页面加载时设置,您还应该在发送AJAX请求之前检索它。