使用ajax在WordPress插件中调用文件时遇到一点问题。我有这个脚本:
<script type="text/javascript">
function setVal()
{
var val = jQuery('#custom_text_message').val()
alert('Setting the value to "' + val + '"')
jQuery.post('session.php', {value: val})
alert('Finished setting the value')
}
jQuery(document).ready(function() {
jQuery('#custom_text_message').blur(function() {setVal()});
//setTimeout('setVal()', 3000);
});
</script>
但是当调用此函数时,它会在未找到的控制台文件中显示错误。我想知道这是否是在WordPress中使用ajax的正确方法。如果没有,我如何调用站点名称session.php的根文件夹中的文件?我是WordPress的新手。
答案 0 :(得分:1)
我已经自己解决了我的问题。首先我在主题 function.php
中定义了ajaxurl,如下所示:
<?php
add_action('wp_head','pluginname_ajaxurl');
function pluginname_ajaxurl() {
?>
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
<? }
?>
我将以下脚本放在我的插件文件的顶部。
<script type="text/javascript">
function setVal()
{
var val = jQuery('#custom_text_message').val()
var data = {
action: 'my_action',
value: val,
};
jQuery.post(ajaxurl, data, function(response) {
alert('Got this from the server: ' + response);
});
}
jQuery(document).ready(function() {
jQuery('#custom_text_message').blur(function() {setVal()});
//setTimeout('setVal()', 3000);
});
</script>
这是我在我的插件中尝试做的字段。
<textarea name="custom_text_message" id="custom_text_message"></textarea>
然后我在 function.php
中将我的操作调用到我的脚本。
add_action('wp_ajax_my_action', 'my_action_session');
function my_action_session() {
global $wpdb; // this is how you get access to the database
session_start();
$_SESSION['cus_msg'] = $_POST['value'];
die(); // this is required to return a proper result
}
然后将我的会话值调用到我的函数中。这就是我所做的一切并为我工作,我希望这会帮助其他人。
注意:强>
wp_ajax_your_action
操作适用于管理员,如果您需要在前端使用该操作,则操作为wp_ajax_nopriv_your_action
。
答案 1 :(得分:0)
<script type="text/javascript">
function setVal()
{
jQuery.ajax({url:"<?php bloginfo('url');?>/wp-content/plugins/plugin_folder_name/session.php",success:function(result){alert(result);}}
}
</script>
答案 2 :(得分:0)
在WordPress中,Ajax请求应该发送到http://your-wordpress-site/wp-admin/admin-ajax.php
- 可以使用admin_url( 'admin-ajax.php' )
获取 - 并且您应该使用action
参数来指定要调用的函数。您可以通过localization将admin-ajax
路径传递到您的javascript文件。
在enqueue脚本后添加到您的插件PHP文件中:
wp_localize_script( 'your-script', 'js_obj', array('ajax_url' => admin_url( 'admin-ajax.php' ) );
在你的javascript中:
jQuery.post(js_obj.ajax_url, {value: val, action: 'run-my-ajax'})
在插件PHP文件中处理ajax的函数:
function call_my_ajax(){
// do stuff
exit;
}
add_action('wp_ajax_run-my-ajax', 'call_my_ajax');
add_action('wp_ajax_nopriv_run-my-ajax', 'call_my_ajax');
答案 3 :(得分:0)
单词按绝对路径的工作,使用完整的URL而不是相对URL:
jQuery.post('session.php',{value:val})
用户喜欢的东西 jQuery.post('/ wp-content / plugins / plugin_folder_name / session.php',{value:val})