我使用这个jquery-ajax脚本发送电子邮件:
$.ajax({
url: process.php,
type: "POST",
data: data,
cache: false,
...
在url
中我调用发送电子邮件的php文件,但只有在我指定完整路径时才能获取它:
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>
脚本
url: "../../templates/process.php",
但是在上述两种情况下,浏览器控制台都会检索到此错误:
POST http://www.domain.com/templates/process.php 404 Not Found 1.56s
我哪里错了?
答案 0 :(得分:25)
这不是在wordpress中实现ajax的方法。所有ajax请求都应该发送到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');
答案 1 :(得分:0)
我建议您使用像Registry这样的系统将所有“全局”值保存在一个地方。
如果您对此感兴趣,可以使用我的小jQuery插件。 GitHub rep
<script type="text/javascript">
$.Registry.set('urlMail', '<?php get_bloginfo('template_url'); ?>/templates/process.php';
</script>
要从注册表中获取价值,您必须使用$ .Registry.get('urlMail');
答案 2 :(得分:0)