如何使用$ .ajax?当我使用它没有击中我的控制器动作

时间:2011-04-06 14:23:19

标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-2

任何人都可以帮助我。

我有这段代码

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<script type="text/javascript">


    function GOTO() {
        var datastring = "id=2";
        $.ajax({
            type: "POST",
            url: "/Home/Index",
            dataType: "json",
            data: datastring,
            success: function (json) { Complete(json.result); },
            error: function (request, status, error) {
                //alert("an error occurred: " + error);
                alert("Error saving data. Please contact support.");
            }
        });
    }

    function Complete(result) {
        if (result == "success") {
            alert("Success");  
        }
        else {
            alert("Failed");
        }
    }
</script>

 <input type="button" value="submit" onclick="JavaScript:GOTO()" />

</asp:Content>

和我的控制器代码就是这个

[HttpPost]
public System.Web.Mvc.JsonResult Index(string datastring)
{
   return Json(new { foo = "bar", baz = "Blech" });
}

但它根本没有击中我的控制器,是我在我的视图中做错了什么?

感谢

3 个答案:

答案 0 :(得分:3)

尝试像这样传递data

$.ajax({
    type: "POST",
    url: "/Home/Index",
    dataType: "json",
    data: { datastring: 'foo bar' },
    success: function (json) { Complete(json.result); },
    error: function (request, status, error) {
        alert("Error saving data. Please contact support.");
    }
});

答案 1 :(得分:2)

function Complete(result) {
    if (result == "success") {
        altert("Success");
       // ^ beware!

您的代码中存在语法错误。

此外,您无需在JavaScript:属性中指定onclick协议,只需在该位置定义标签即可。更好的是,不要在HTML属性中分配事件监听器,而是使用不引人注目的JavaScript,包括在JavaScript不可用时罕见的情况下的回退。

更新:如果您收到“$.ajax未定义”错误,则可能未在页面中包含jQuery。添加

<script type="text/javascript" src="path/to/jquery-X.X.X.js"></script>

到您的页面上面使用script(或任何其他jQuery函数)的$.ajax元素。

答案 2 :(得分:2)

它可能取决于您传入的数据。您的方法需要一个名为datastring的参数,但您传入'id = 2'。