文件路径

问题描述:

我使用这个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 ^我错了吗?

+0

更换

data: data 

解决 “模板/ process.php”,'? – jtheman 2013-04-29 08:23:29

+0

指定完整路径有什么问题? – Musa 2013-04-29 08:37:44

+0

@jtheman:用你的解决方案,它检索到这个错误'POST http://www.domain.com/contact-page/templates/form-contatti-mail.php 404 Not Found 1。34s' – 2013-04-29 08:43:55

这不是在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。 `网址:

+0

我不知道。我会阅读,但我没有开发插件!这是一个简单的联系表格。或者我每次使用ajax都必须使用这种方式? – 2013-04-29 09:40:50

+0

想你的代码,我得到错误:'的ReferenceError:sendmail的是没有定义 - 动作:sendmail的,',它重新加载页面 – 2013-04-29 10:04:15

+0

我忘了周围的引号。更新我的答案! – RRikesh 2013-04-29 10:14:24

我会建议你使用Registry等系统来保存所有“全局”值在一个地方。

Registry design pattern

还有就是我小的jQuery插件,如果这是可能是有趣的你。 GitHub rep

<script type="text/javascript"> 
    $.Registry.set('urlMail', '<?php get_bloginfo('template_url'); ?>/templates/process.php'; 
</script> 

并获得从注册表值,您必须使用$ .Registry.get( 'urlMail');

+0

感谢,但我宁愿不仅适用于使用插件。除此之外,我已经在使用另一个脚本的“变量方法”并且它可以工作。我不明白为什么它不适合这个! – 2013-04-29 09:24:38

您是否尝试过我使用RRikesh提供的代码,但与

data: data + '&action=sendmail' 
+3

你真的应该作出@ RRikesh的答案正确的答案,因为这个答案涉及另外校正你的Ajax调用,而不是原来的问题,其涉及到的文件路径,他在上面回答。我知道这听起来很挑剔,但绿色的勾号是人们去寻找问题答案的地方。 – happilyUnStuck 2013-07-07 23:51:03

+1

我编辑了RRikesh的答案,使其正确,因为它的评分最高。我认为这应该是首要的课程,因为它是正确的答案,只需要一个小小的编辑。 – Jake 2014-03-11 17:13:17