我使用此jquery-ajax脚本发送电子邮件:
$.ajax({ url: process.php, type: "POST", data: data, cache: false, ...
在url我调用发送电子邮件的php文件中,但是只有当我指定完整路径时,ajax才能获取它:
url
url: "http://www.domain.com/wp-content/themes/site_theme/templates/process.php",
但是我必须使用这样的语法:
url: "../../templates/process.php",
或使用变量在html页眉/页脚中声明
HTML
<script type="text/javascript"> var urlMail = '<?php bloginfo('template_url'); ?>/templates/process.php'; </script>
脚本
但在上述两种情况下,浏览器控制台都会检索到此错误:
POST http://www.domain.com/templates/process.php 404 Not Found 1.56s
我哪里错了?
那不是在wordpress中实现ajax的方法。所有ajax请求都应发送到admin-ajax.php。
admin-ajax.php
在您的模板文件中:
<script type="text/javascript"> var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; </script>
在您的js中:
$.ajax({ url: ajaxurl, type: "POST", cache: false, data: data + '&action=sendmail' //action defines which function to use in add_action });
在您的functions.php中:
function send_my_mail(){ #do your stuff } add_action('wp_ajax_sendmail', 'send_my_mail'); add_action('wp_ajax_nopriv_sendmail', 'send_my_mail');
了解有关Ajax in Plugins。
Ajax in Plugins