当我没有引用不显眼的 Ajax 脚本时,我有一个 Ajax 调用可以正常工作。当我将它添加到页面时,它会阻止 onSuccess Javascript 触发。当尝试使用引用的脚本渲染局部视图时,一切正常。此外,奇怪的是 onSuccess 函数在页面首次加载时触发。
为了澄清,我在我的 DOM 底部引用了脚本,并且 web.config 文件启用了它。使用浏览器调试时,我看到 AJAX 是成功的,它只是没有进入 javascript onSuccess 方法。这是我的代码:
脚本参考:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/Scripts/jquery-ui-1.10.4.min.js")
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js")
@Scripts.Render("~/Scripts/AAData.js")
@RenderSection("scripts", required: false)
</body>
</html>
AJAX 调用:
@using (Ajax.BeginForm("Search", "Home", new AjaxOptions { OnSuccess = "onSuccess", HttpMethod = "GET", UpdateTargetId = "Search" }))
{
<div class="col-md-6 form-inline">
<div class="form-group" style="width:85%;">
<div class="right-inner-addon">
<i class=" glyphicon glyphicon-search"></i>
<input type="text" data-autocomplete="@Url.Action("Quicksearch","Home")" class="form-control" placeholder="Search" name="q" value="@ViewBag.CurrenetFilter" />
</div>
</div>
<div class="form-group">
<button class="btn btn-default form-inline" type="submit">Search</button>
</div>
<br />
</div>
}
控制器:
public ActionResult Search(string q, int? page, string catb = null)
{
return Json(new { url = Url.Action("Search", "Items", new { query = q, pageNum = page, categoryB = catb }) }, JsonRequestBehavior.AllowGet);
}
Javascript:
var onSuccess = function (result) {
if (result.url) {
// if the server returned a JSON object containing an url
// property we redirect the browser to that url
window.location.href = result.url;
}