为什么世界上这个ajax调用不起作用

时间:2011-02-12 01:04:00

标签: ajax asp.net-mvc-2

$(function () {
    $('input#UserName').blur(function () {
        var username = $('input#UserName').val();
        $.ajax(
        {
            type: "POST",
            url: "Profile/CheckAvailability",
            data: "username=" + username,               
            success: function (result) {
                //Some code here
            },
            error: function () {
                alert("Sorry! We could not receive your feedback at this time.");                
            }
        });
    });
});

以及Profile控制器上的代码

    [HttpPost]
    public JsonResult CheckAvailability(string username)
    {
        bool isAvailable = false;
        //Some code here
        return Json(new {success = isAvailable});
    }

每次alert("Sorry! We could not receive your feedback at this time.");被触发。

感谢。

2 个答案:

答案 0 :(得分:1)

以下是一些提示:

  1. 确保您的控制器操作不会引发异常(尤其是您说//Some code here的部分)。这可以通过逐步调试和调试来验证。
  2. 确保始终对您的请求参数进行URL编码,并且绝不使用字符串连接:

    data: { username: username },
    
  3. 永远不要在你的javascript文件中加密网址。在处理网址时始终使用网址助手(如果这是一个单独的JavaScript,那么您可以在视图中使用全局js变量集):

    url: '<%= Url.Action("Profile", "CheckAvailability") %>',
    
  4. 使用FireBug查看服务器发送和接收的内容。

答案 1 :(得分:0)

尝试将dataType设置为“json”,因为您指定的那个无效。来自jquery文档的有效数据类型:xml,json,jsonp,html,text。

查看有关ajax错误处理的网址:jQuery Ajax error handling, show custom exception messages