php AJAX 脚本的文件路径(在 Wordpress 中)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16274093/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
File path for AJAX script (in Wordpress)
提问by Fred K
I use this jquery-ajax script to send email:
我使用这个 jquery-ajax 脚本来发送电子邮件:
$.ajax({
url: process.php,
type: "POST",
data: data,
cache: false,
...
in url
I call the php file that sends email, but ajax get it only if I specify the full path:
在url
我调用发送电子邮件的 php 文件,但 ajax 只有在我指定完整路径时才能获取它:
url: "http://www.domain.com/wp-content/themes/site_theme/templates/process.php",
but I have to use a syntax like this:
但我必须使用这样的语法:
url: "../../templates/process.php",
or using a variable to declare in the html header/footer
或使用变量在 html 页眉/页脚中声明
Html
html
<script type="text/javascript">
var urlMail = '<?php bloginfo('template_url'); ?>/templates/process.php';
</script>
Script
脚本
url: "../../templates/process.php",
but with both the above cases the browser console retrieves this error:
但是对于上述两种情况,浏览器控制台都会检索此错误:
POST http://www.domain.com/templates/process.php 404 Not Found 1.56s
Where am I wrong?
我哪里错了?
回答by RRikesh
That's not the way to implement ajax in wordpress. All ajax request should be made to admin-ajax.php
.
这不是在 wordpress 中实现 ajax 的方式。所有 ajax 请求都应发送到admin-ajax.php
.
In your template file:
在您的模板文件中:
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
In your js:
在你的js中:
$.ajax({
url: ajaxurl,
type: "POST",
cache: false,
data: data + '&action=sendmail' //action defines which function to use in add_action
});
in your functions.php:
在你的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');
Read about Ajax in Plugins
.
阅读有关Ajax in Plugins
.
回答by Sergei Khaletskiy
I would be recommended to you use system like Registry for save all "global" values in a one place.
我会建议您使用像 Registry 这样的系统将所有“全局”值保存在一个地方。
There is my small jQuery plugin if this is may be interesting to you. GitHub rep
如果您感兴趣的话,这里有我的小型 jQuery 插件。GitHub 代表
<script type="text/javascript">
$.Registry.set('urlMail', '<?php get_bloginfo('template_url'); ?>/templates/process.php';
</script>
And to get value from the Registry you must use $.Registry.get('urlMail');
要从注册表中获取价值,您必须使用 $.Registry.get('urlMail');