是什么导致$ .ajax导致完整的回发

时间:2013-01-10 07:36:38

标签: jquery json asp.net-mvc

有人可以告诉我是什么原因导致 $。ajax'POST'请求导致完整的回复后(整页刷新)?

我在 ASP.NET MVC 上下文中使用$ .ajax'POST',其中视图通过$ .ajax调用控制器方法(返回JSON结果) POST'请求。

代码如下。


// View.
<button id="save" onclick="saveClick()" />

// View.
<script type="text/javascript">

    function saveClick() {
        if (!$("form").valid()) {
            return false;
        }

        $.ajax({
            url: '@Url.Action(@MVC.Ticket.ActionNames.SaveTicket, @MVC.Ticket.Name)'
            type: 'POST',
            data: JSON.stringify(getJsonTicket()),
            dataType: 'json',
            contentType: "application/json",
            cache: false,
            success: function(data) {
                alert(data.SaveResult);
            }
        });

        return true;
    }

    function getJsonTicket() {
        ...
    }

</script>

// Controller action.
public virtual JsonResult SaveTicket(Ticket newTicket)
{
    try
    {
        TicketManager.SaveTicket(newTicket);
        return Json(new CreateTicketViewModel {SaveResult = "success"});
    }
    catch
    {
        return Json(new CreateTicketViewModel { SaveResult = "error" });
    }
}

3 个答案:

答案 0 :(得分:10)

待办事项

<button id="save" type="button" onclick="saveClick()" />

确保此按钮不会发布表单。

<强>解释

按钮元素的type属性的默认值是“submit”。

https://stackoverflow.com/a/3315016/1014281

答案 1 :(得分:3)

您确定使用的是<button>而不是<input type="submit">吗?因为如果你不阻止按钮提交它将提交表格(完整回发)。

只要<input type="submit" onclick="return saveClick()">始终返回false,

saveClick()就可以正常工作。

答案 2 :(得分:0)

您必须将type="button"添加到button代码