Jquery 是什么导致$.ajax返回完整的帖子
有人能告诉我是什么原因导致$.ajax“POST”请求返回完整的帖子(整版刷新) 我在ASP.NET MVC上下文中使用$.ajax'POST',视图通过$.ajax'POST'请求调用控制器方法(返回JSON结果) 代码如下Jquery 是什么导致$.ajax返回完整的帖子,jquery,json,asp.net-mvc,Jquery,Json,Asp.net Mvc,有人能告诉我是什么原因导致$.ajax“POST”请求返回完整的帖子(整版刷新) 我在ASP.NET MVC上下文中使用$.ajax'POST',视图通过$.ajax'POST'请求调用控制器方法(返回JSON结果) 代码如下 做 以确保此按钮未发布表单 说明: 按钮元素的type属性的默认值是“submit” 您确定您使用的是而不是?因为如果不阻止按钮提交,它将提交表单(完整回发) 只要saveClick()始终返回false,就可以工作。您必须将type=“button”添加到按钮标签
做
以确保此按钮未发布表单
说明:
按钮元素的type属性的默认值是“submit”
您确定您使用的是
而不是
?因为如果不阻止按钮提交,它将提交表单(完整回发)
只要saveClick()
始终返回false,就可以工作。您必须将type=“button”
添加到按钮标签中是否返回局部视图?您还可以显示AJAX调用和控制器操作!请提供一些示例代码,以便我们可以仔细查看。我不明白您所说的“导致$.ajax'POST'请求返回完整的帖子(整页刷新)”是什么意思,如果您在锚定标记的单击事件中调用$.ajax,则可能不调用preventDefault
。@Simon,代码已添加到其中,同样的结果。但是我做了一件事,删除了html
标记,在其余功能按要求工作时,我成功地阻止了完整的帖子。但这并不是完美的解决方案,因为jQuery验证插件需要
标记。西蒙,你看到什么解决办法了吗?谢谢,亲爱的!这就是魅力所在。你能告诉我这是怎么把柱子修好的吗?这是一个完美的场景。再次感谢西蒙。是的,是一个按钮。然而随着时间的推移,我添加了returnfalse
到saveClick()
函数的末尾,但结果相同。在另一次尝试中,我删除了html
标记,并在其余功能按要求工作时成功地停止了完整的回发。但这并不是完美的解决方案,因为jQuery验证插件需要
标记。你认为这有什么解决办法吗?谢谢。在onclick属性中必须有“return”,因为我在按钮标签中缺少了type=“button”
。添加它解决了这个问题。谢谢你,乔纳斯。onclick=“return saveClick()”
也应该可以。(而不是类型)是的,你是正确的。正如您所提到的,该方法必须始终返回false,或者将该方法调用为:onclick=“saveClick();return false;”
谢谢Jonas。
// 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" });
}
}
<button id="save" type="button" onclick="saveClick()" />