Ajax请求被onClick请求覆盖
Ajax request is overriden by onClick request
我正在学习使用ASP.NET MVC 4构建应用程序教程。但对我来说,ajax请求/?page=2&searchTerm=Res2
被另一个直接的非ajax请求/?page=2
覆盖,后者实际上是页面链接的href
。因此,这将用新数据替换整个页面。
虽然教程进行得很顺利,但单击只会向服务器发送Ajax请求。
$(function () {
var ajaxSubmit = function () {
var $form = $(this);
var options = {
url: $form.attr("action"),
type: $form.attr("method"),
data: $form.serialize()
}
$.ajax(options).done(function (data) {
var $target = $($form.attr("data-otf-target"));
var $effectHtml = $(data);
$target.replaceWith($effectHtml);
$effectHtml.effect("highlight");
});
return false;
}
var submitAutoCompleteForm = function (event, ui) {
var $input = $(this);
$input.val(ui.item.label);
$input.parents("form:first").submit();
}
var createAutoComplete = function () {
var $input = $(this);
var options = {
source: $input.attr("data-otf-autocomplete"),
select: submitAutoCompleteForm
}
$input.autocomplete(options);
}
var getPage = function () {
var $a = $(this);
$a.attr("disabled", true);
var options = {
url: $a.attr("href"),
data: $("form").serialize(),
type: "get"
}
$.ajax(options).done(function (data) {
var target = $a.parents("div.pagedList").attr("data-otf-target");
$(target).replaceWith(data);
});
}
$("form[data-otf-ajax='true']").submit(ajaxSubmit);
$("input[data-otf-autocomplete]").each(createAutoComplete);
$(".body-content").on("click", ".pagedList a", getPage);
})
结果分区
<div id="restaurantList">
<div class="pagedList" data-otf-target="#restaurantList">
@Html.PagedListPager(Model, page => Url.Action("Index", new { page }), PagedListRenderOptions.MinimalWithItemCountText)
</div>
@foreach (var item in Model)
{
<div>
<h4>@item.Name</h4>
<div>@item.City, @item.Country</div>
<div>@item.CountOfReviews</div>
<hr />
</div>
}
</div>
和布局
<div class="container body-content">
@RenderBody()
</div>
我在相同的分页教程中发现了这个问题,但这并不能解决这个问题。
因为在提交表单和单击a时使用AJAX来检索数据,所以需要使用preventDefault()
来防止这些事件的默认操作。试试这个:
var ajaxSubmit = function (e) {
e.preventDefault();
// rest of your code...
}
var getPage = function (e) {
e.preventDefault();
// rest of your code...
}
相关文章:
- 在循环中分配json值时,值被覆盖
- 谷歌地图固定位置覆盖
- ajax请求的顺序总是不同的
- Ajax请求被onClick请求覆盖
- 如何覆盖连接/快速请求 URI
- 如果对 JSONP 请求的服务器响应未正确包装在函数中,是否有任何方法可以覆盖“无效标签”错误
- Ajax 覆盖在 ajax 请求期间未显示
- 在不覆盖用户请求对象的情况下,使用具有多种策略的passport.js
- 使用这种Facebook风格的Lightbox-请求AJAX-在一个页面上覆盖多个按钮
- AJAX请求是否覆盖另一个请求
- 删除或覆盖Restangular中限定范围配置的请求拦截器
- Nodejs:做单例变量被覆盖做异步请求
- 覆盖所有来自javascript的请求
- 变量在使用异步AJAX(使用jQuery)请求加载数据时被覆盖
- 多个xmlhttp请求-覆盖JSON get's
- 在JQuery/Backbone中,我如何覆盖每个AJAX请求来添加一个额外的参数?
- 主干模型:解析覆盖中的Ajax请求
- 覆盖自动计算的TileWMS请求属性在开放层3
- 请求正文正在覆盖HTTP方法
- 覆盖跨域请求的 XMLHttpRequest