MVC2:Ajax调用总是在错误函数中运行。为什么?怎么了?

时间:2010-08-26 14:57:37

标签: ajax asp.net-mvc-2

aspx网站:

<script type="text/javascript">
function AjaxTest() {

  var codeVal = "hello world";

  if (codeVal) {
    $.ajax({
             type: "POST",
             url: "CheckAge",    
             data: { code: codeVal },
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             async: true,
             cache: false,
             success: function (result) {
                        alert("in ajax success");
             },
             error: function () {
                        alert("error");
             }

          });
  } 
}

它的双重检查是调用了javascript函数。

控制器:

[HttpPost]
public JsonResult CheckAge(String code)
{
      return Json("abc");
}

它总是在ajax - error - 函数中结束。 无论如何都不会调用Controller函数。为什么? 为什么我总是出错? 有什么问题?

1 个答案:

答案 0 :(得分:2)

检查您要发布到的网址。您似乎缺少控制器部件。例如。它应该是/{controller}/{action}

如果该脚本直接在视图中(即不在外部javascript文件中),您可以使用以下内容:

$.ajax({
    type: "POST",
    url: <%= Url.Action("CheckAge", "ControllerName") %>,    
    data: { code: codeVal },
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: true,
    cache: false,
    success: function (result) {
        alert("in ajax success");
    },
    error: function () {
        alert("error");
    }
});

另外,我发现使用firebug调试ajax的东西是有利的。您可以在javascript中设置断点,还可以查看所有请求和响应。

HTHS,
查尔斯

编辑:尝试简化一些事情......例如

$.post('<%= Url.Action("CheckAge", "ControllerName") %>',
       { code: codeVal },
       function (data) {
           alert("in ajax success");
       },
       "json");