0

邪魔にならない 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;
    }
4

2 に答える 2

0

これを修正するために、スクリプトの順序を変更し、jquery を最新のものに更新しました。スクリプトは次の順序です。

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/Scripts/jquery.validate.min.js")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js")
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")

Jquery はバージョン 2.1.1 です

目立たない ajax は 3.1.2 です

于 2014-05-25T16:13:06.573 に答える
0

OnSuccess の代わりに OnComplete を使用してみましたか?

http://msdn.microsoft.com/en-us/library/system.web.mvc.ajax.ajaxoptions.oncomplete(v=vs.118).aspx

于 2014-05-11T05:14:13.490 に答える