我正在使用ajax从查询表单中收集数据,然后将数据发送到另一个页面,此页面应该将此数据发送到我的电子邮箱。
问题是当我点击发送按钮时,我在firebug控制台中收到404错误
在模板中(带有ajax代码)我使用这个调用:
$.ajax({
type: "POST",
url: "<?php echo get_permalink(11); ?>",
data: {
name: $('.enquiryName').val(),
email: $('.enquiryEmail').val(),
comments: $('.enquiryComments').val()
}
}).done(function(msg) {
if (msg=='1') {
alert('<strong>Your enquiry has been sent successfully.</strong>');
$('.enquiryName').val('');
$('.enquiryEmail').val('');
$('.enquiryComments').val('');
} else {
$('.errorBox').html(msg);
}
});
目标页面只是在wordpress中创建的另一个页面,具有非常基本的模板。当我把这个页面地址添加到浏览器URL栏并按回车时,我收到消息无法发送。,这是正确的。
可能有什么问题?在ajax中我得到404错误,在浏览器中没问题。
答案 0 :(得分:0)
您需要在Ajax调用中使用相对URL ...将<?php echo get_permalink(11); ?>
替换为实际的相对URL并查看它是否有效..
答案 1 :(得分:0)
Replace
url: "<?php echo get_permalink(11); ?>",
with
url: '<?php echo admin_url('admin-ajax.php'); ?>'
您还必须在数据中传递'action'参数,然后将其附加到回调函数
必须看到这一点:
答案 2 :(得分:0)
您需要在前端获取Ajax URL的实例。
为此,您需要将脚本排入队列并使用WP
函数wp_localize_script
所以在functions.php
function enqueue_AjaxURL() {
wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/jmy-Yourscript.js', array('jquery') );
wp_localize_script( 'ajax-script', 'ajax_object',
array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts', 'enqueue_AjaxURL' );
在您的JS文件中,您可以使用该对象:
url: ajax_object.ajax_url,