.load()
次のようなスクリプトを含む連絡先ページを読み込んでいます。
<script type="text/javascript">
$('#submit').click(function(e){
e.preventDefault();
var name = $('#name').val();
var email = $('#email').val();
var message = $('#message').val();
$.post("<?php echo bloginfo( 'template_directory' ) . '/inc/mailit.php';?>",
{
name: name,
email: email,
message: message
},
function(data) {
var n = data.indexOf('<span class="success_message">');
if (n !== 0) {
$('#message_box_1').empty().append(data);
} else {
$('#contact_form').empty().append(data);
}
}
);
});
</script>
連絡先ページを直接ロードすると (つまり に移動するとhttp://example.com/contact-us
)、スクリプトは正常に動作しますが、フォームとスクリプトを を使用して DOM にロードすると動作しません.load()
。をクリックする#submit
と、スクリプトを実行せずにフォームが送信されます。何が起こっているのですか?
ああ、ロード スクリプトは次のようになります。
<script>
$('#top_links a').click(function (e) {
e.preventDefault();
var link = $(this).attr('href');
$('#content').empty();
$('#content').load(link + ' #content > *');
});
</script>
アップデート:
の問題を指摘してくれた @pointy に感謝し.load()
ます。だから今、私は自分のコードを使用するように変更しました$.get
:
<script>
$('#top_links a').click(function (e) {
e.preventDefault();
var link = $(this).attr('href');
$('#content').empty();
$.get(link, { },
function(data) {
$('#content').replaceWith($(data).find("#content"));
}
)
});
</script>
問題は同じです。上記の AJAX スクリプトは、ユーザーが送信ボタンをクリックしたときに、フォームの送信または投稿要求の送信を妨げません。ロードされているコンテンツの外側に両方のスクリプトを配置しました$.get