5

特定のボタンをクリックした後に Ajax 呼び出しを開始するために、jQuery を使用しようとしています。発生する可能性のある構文と問題の例をいくつか読みましたが、私の原因に対する有効な解決策を見つけることができませんでした。これがコードです。

コントローラ メソッド: (HomeController.cs)

    [HttpPost]
    public JsonResult ChangeCompany(string companyCode)
    {
        return Json(new { result = companyCode }, JsonRequestBehavior.AllowGet);
    }

jQuery コード:

    function changeCompany(company) {
    $.ajax({
        url: '@Url.Action("ChangeCompany", "Home")',
        type: 'POST',
        data: JSON.stringify({ companyCode: company }),

        success: function (data) {
            alert("Company: " + data);
        },
        error: function (req, status, error) {
            alert("R: " + req + " S: " + status + " E: " + error);
        }
    });
}

最後に、この関数を次のように呼び出しています。

$('.companyButton').click(function () {
    compCode = $(this).text();
    debug("Click event --> " + $(this).text());
    changeCompany(compCode);
});

デバッグ メッセージは正しく表示されますが、Ajax 呼び出しは次のアラートで常に失敗します。R: [object Object] S: error E: Not Found

私はそれをどうするか完全にはわかりません。

このトピックに関するいくつかの質問があることは知っていますが、どれも私の問題を解決していないようで、これらのコード ブロックの何が問題なのか正直わかりません。任意の洞察をいただければ幸いです。

編集: 注目に値する場合、これはモバイル デバイス用です。jQuery Mobile とともに、Windows 8 Phone Emulator (Internet Explorer) でのテスト。それがAjaxにまったく影響するかどうかはわかりません

編集 2:生のネットワーク呼び出しを見た後'Url.Action("ChangeCompany", "Home")'、適切な URL に変換されていないようで、代わりに生の URL テキストであるかのように直接呼び出されています。これは古い jQuery によるものですか、それとも他の要因によるものですか?

4

3 に答える 3

6

あなたの EDIT2 ではurl: '@Url.Action("ChangeCompany", "Home")',、別の JavaScript ファイルで使用しているようです。かみそりコードは.cshtmlファイル内にしか記述できず、.jsファイル内では機能しません

于 2013-06-18T17:31:18.963 に答える
0

companyCodeアクションが直接返されないことに注意してください。それをJsonresultプロパティに割り当てているため、成功関数で結果を表示するには、次のものが必要です。

success: function (data) 
  {
     alert("Company: " + data.result);
  }

また、これE: Not Foundは、ルーティングの問題がある可能性があることを示しています。ChangeCompanyアクション内にブレークポイントを設定した場合、それはヒットしていますか?

于 2013-06-18T17:23:13.997 に答える