特定のボタンをクリックした後にAjaxコールを起動するためにjQueryを使用しようとしています。私は遭遇する可能性のある構文と問題のいくつかの例を読んだが、私の目的のために働く解決策を見つけることに失敗した。ここにコードがあります。jQuery AjaxがMVC 4コントローラメソッドの呼び出しに失敗しました
コントローラ方法:(HomeController.cs)
の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
私はそれをどうしたらいいのか分かりません。
このトピックに関するいくつかの質問がありますが、いずれも私の問題を解決していないようで、これらのコードブロックに何が問題なのか正直には分かりません。どんな洞察にも感謝します。
編集: これは注目に値する場合は、これはモバイルデバイス向けです。 Windows 8 Phone Emulator(Internet Explorer)とjQuery Mobileのテスト。それがすべて
EDIT 2でアヤックスに影響を与える場合、わからない:生のネットワーク呼び出しを見てとった後 、'Url.Action("ChangeCompany", "Home")'
が適切なURLに変換されていないと、それは、生のURLであるかのように代わりに直接呼び出されているようですテキスト。これは時代遅れのjQueryやその他の要因によるものですか?
あなたのコントローラアクションメソッドはどのように見えますか?また、あなたのブラウザのdevツールで生のネットワーク通話を見て、通話が何であるかを正確に確認してください。トラブルシューティングに役立ちます。 –
サーバー側のエラーだと思います。 Chromeのデベロッパーツールバーのネットワークセクションで、リクエストをクリックすると、プレビュータブでレスポンスを確認できます。 –
ブラウザでソースを見ると、URLは正しく見えますか?また、エラー関数の中に 'debugger;'を設定した場合は、パラメータを詳しく見てください。 –