I持って、次のHTMLコード:(それはdiv要素の中に、AJAXを経由してロードされる)jQueryのは、ページの更新と、フォームポストを動作していないアヤックス
(関係ない部分を切り取り)だから、
<form id='addContactForm' method='post' action='/contact/create/'>
<div>
<input type="image" name="submit" id="addContactSubmit" src="/images/add-small.png" style="width: auto; vertical-align: bottom;">
</div>
</form>
<script>
$('#addContactSubmit').click(function() {
alert('got here');
$.ajax({
type: 'POST',
url: '/contact/create/',
data: $("#addContactForm").serialize(),
success: function (data, status, xhttp) {
if (data) {
alert('Got Data');
} else {
alert('No Data');
}
},
dataType: html
});
return false;
});
</script>
<image>
をクリックすると、実際にフォームがポストされ、ページが更新されます。私は問題がjqueryがロードされていなかったことを述べた別の記事を読んで、一度その問題を修正してロードしました。しかし、この場合、jqueryがロードされていることを通知する警告が表示されますが、$.ajax
部分が実行されていない(または問題がある)ようです。 $.ajax
部分を削除すると、アラートが表示され、ページは送信されず再読み込みされません。
元々、このフォームhtmlはメインページのajax呼び出しで読み込まれていると述べていますが、失敗したajax投稿とは何か関係があるのでしょうか?注意警告(「データが見つかりました」)または(「データがありません」)、警告が「ここにあります」
すべてのinsiteは素晴らしいでしょう。ありがとうございました
別のメモ、私は火かき棒でエラーを取得しています。
これはまさに私が必要としていたものです!完璧。上記のコードでは少し問題が発生しています。 Firebugは次のように表示しています。 "htmlが定義されていません" [Break On This Error](39の範囲外18)。今すぐ 'dataType:html'行を削除しても正常に動作するようですが、それが最善の解決策ですか? –
引用符で試してみましたか?だから "html"。私は引用符なしでかなり確信しています、javascriptは、このケースでは存在しないため、あなたがFirebugのエラーを取得する理由は変数ですと思うでしょう。リクエストを作成するときにそのパラメータをそのまま残しておけば安全ですが、jQueryは内部的な作業を行いますが、通常、送信するデータフォーマットを知るのに十分なインテリジェントです。ここをクリックしてください:http://api.jquery.com/jQuery.ajax/データ型は、ページの下半分です。 – timothyclifford
これは素晴らしいことでした。ありがとう! –