我正在加载一个.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
)时,该脚本工作正常,但当我使用.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 Script 仍然没有阻止表单提交或发送 post 请求。我已将两个脚本放在正在加载的内容之外$.get