2

送信ボタンのある ajax フォームがありますが、送信ボタンをクリックすると 404 ページが見つかりませんというエラーが表示されます。

私の見解の一部:

@using (Ajax.BeginForm("Index", "Maps", null, ajaxOptions, new { @class = "form-search" }))
{
    ...
    ...
    <button type="submit" class="btn">Search</button>
}

ajaxOptions 変数は次のように定義されます。

var ajaxOptions = new AjaxOptions
{
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "filter-results",
    LoadingElementId = "filter-loading",
    LoadingElementDuration = 2000,
    OnFailure = "showAjaxError",
    Url = Url.Action("Index")
};

これは私のブラウザ (Chrome) で次のようにレンダリングされます。

<form action="/Maps" class="form-search" data-ajax="true" data-ajax-failure="showAjaxError" data-ajax-loading="#filter-loading" data-ajax-loading-duration="2000" data-ajax-mode="replace" data-ajax-update="#filter-results" data-ajax-url="/Maps" id="form0" method="post">    <div class="well well-small">
        <div class="input-append">
            <input type="text" class="span3">
            <button type="submit" class="btn">Search</button>
        </div>
        <div class="input-prepend pull-right">
            <button type="submit" class="btn">Items Per Page</button>
            <input type="number" name="ItemsPerPage" class="span1" value="10">
        </div>
    </div>
</form>

404 エラーには次のように表示されます。

Requested URL: /Maps

これをブラウザに貼り付けると動作します:

http://localhost:7374/Maps

私は正しいjavascriptファイルを参照していると思います-ページソースを見ると、次のように表示されます:

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.0/jquery-ui.min.js"></script>

私の Web.config には次のものがあります。

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
4

3 に答える 3

3
  1. MapsController動作中のコントローラーがIndexonly を受け入れるかどうかを確認しHttpGetます。POSTメソッドで送信するため
  2. これが必要ですUrl = Url.Action("Index")か?
  3. この質問を参照してください。バージョン 1.9 の jQuery には.liveメソッドがなく、ファイルjquery.unobtrusive-ajax.jsはこのメソッドで動作します。jQuery 1.9 以降で動作する必要がある場合は、それを変更する必要があります。

ポイント3のスペイン語ソリューション(リンク)。

于 2013-02-13T22:34:14.237 に答える
0

何らかの理由で、これはjquery 1.9.0または1.9.1では機能しませんが、以前のバージョンでは機能します。

作品:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

動作しません(404エラー):

<script src="http://code.jquery.com/jquery-latest.js"></script>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
于 2013-02-13T21:39:42.213 に答える
0

コントローラーのアクションが HttpGetAttribute でマークされているのではないでしょうか? 私の知る限り、Ajax ヘルパーを使用している場合は、Microsoft の ajax スクリプト (MicrosoftAjax.js、MicrosoftMvcAjax.js、および MicrosoftMvcValidation.js) への参照も追加する必要があります。

于 2013-02-13T19:36:41.010 に答える