文件路径
我使用这个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",
,或者使用一个变量来声明我n中的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
w ^我错了吗?
这不是在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');
阅读Ajax in Plugins
。 `网址:
我不知道。我会阅读,但我没有开发插件!这是一个简单的联系表格。或者我每次使用ajax都必须使用这种方式? – 2013-04-29 09:40:50
想你的代码,我得到错误:'的ReferenceError:sendmail的是没有定义 - 动作:sendmail的,',它重新加载页面 – 2013-04-29 10:04:15
我忘了周围的引号。更新我的答案! – RRikesh 2013-04-29 10:14:24
我会建议你使用Registry等系统来保存所有“全局”值在一个地方。
还有就是我小的jQuery插件,如果这是可能是有趣的你。 GitHub rep
<script type="text/javascript">
$.Registry.set('urlMail', '<?php get_bloginfo('template_url'); ?>/templates/process.php';
</script>
并获得从注册表值,您必须使用$ .Registry.get( 'urlMail');
感谢,但我宁愿不仅适用于使用插件。除此之外,我已经在使用另一个脚本的“变量方法”并且它可以工作。我不明白为什么它不适合这个! – 2013-04-29 09:24:38
您是否尝试过我使用RRikesh提供的代码,但与
data: data + '&action=sendmail'
你真的应该作出@ RRikesh的答案正确的答案,因为这个答案涉及另外校正你的Ajax调用,而不是原来的问题,其涉及到的文件路径,他在上面回答。我知道这听起来很挑剔,但绿色的勾号是人们去寻找问题答案的地方。 – happilyUnStuck 2013-07-07 23:51:03
我编辑了RRikesh的答案,使其正确,因为它的评分最高。我认为这应该是首要的课程,因为它是正确的答案,只需要一个小小的编辑。 – Jake 2014-03-11 17:13:17
更换
解决 “模板/ process.php”,'? – jtheman 2013-04-29 08:23:29
指定完整路径有什么问题? – Musa 2013-04-29 08:37:44
@jtheman:用你的解决方案,它检索到这个错误'POST http://www.domain.com/contact-page/templates/form-contatti-mail.php 404 Not Found 1。34s' – 2013-04-29 08:43:55