我正在修改一个插件,希望从选择列表中获取一个值,并根据所选值自动填充文本区域。
php代码来自一个名为wpf-addusers.php
但该文件不是直接显示的。显示此信息的页面的(绝对)url为http://localhost:8888/dev_wordpress/wp-admin/admin.php?page=mfgroups&mingleforum_action=usergroups&do=add_user_togroup
.
我的javascript(ajax)如下所示:
jQuery(function(jQuery){
jQuery(“#用户组”)。更改(函数(){
jQuery.ajax({
type: "GET",
url: "wpf-addusers.php",
data: { usergroup: jQuery(this).find(\':selected\').val() }
}).done(function( results ) {
console.log( results );
});
});
});
当我使用“wpf addusers.php”时,我得到一个404错误,如下所示:
GET http://localhost:8888/dev_wordpress/wp-admin/wpf-addusers.php?usergroup=The+Freedom 404 (Not Found)
The+Freedom
是我想在php代码中使用的值:
if(function_exists(\'home_url\')){
$usergroups = $mingleforum->get_usergroups();
$team_title = $_GET[ \'usergroup\'];
$team_id = $wpdb->get_var( "SELECT ID FROM $wpdb->posts WHERE post_title = \'" . $team_title . "\'" );
$players = get_users( array (
\'meta_key\' => \'team-meta\',
\'meta_value\' => $team_id
));
echo "<div class=\'wrap\'>
<h2><img src=\'$image\'> Add users</h2>";
echo "<form name=\'add_usertogroup_form\' action=\'admin.php page=mfgroups&mingleforum_action=usergroups\' method=\'post\'>
<table class=\'widefat\'>
<thead>
<tr>
<th>User group</th>
<th>User names </th>
</tr>
</thead>
<tr class=\'alternate\'>
<td>"; echo "<select name=\'usergroup\' id=\'usergroup\'>
<option selected=\'selected\' value=\'add_user_null\'>".__("Select User group", "mingleforum")."
</option>";
foreach($usergroups as $usergroup){
echo "<option value=\'". $usergroup->id ."\'>" . $usergroup->name . "</option>";
}
echo "</select></td>
<td>"; echo "<textarea name=\'togroupusers\' rows=\'10\' columns=\'60\'>";
if ( isset($_GET[ \'usergroup\'])){
foreach($players as $player) {
echo $player->display_name . ", ";
}
}
echo "</textarea>";
echo "<br/>
<i>The above players will be added to the group.</i></td>
</tr>
<tr class=\'alternate\'>
<td colspan=\'2\'><input class=\'button\' name=\'add_user_togroup\' type=\'submit\' value=\'".__("Add users", "mingleforum")."\' /></td>
</tr>
</table>
</form>
</div>";
}
有人知道我如何将“usergroup”传递给我的php代码吗?
顺便说一下,我的javascript在管理端正确排队。所以我想我没有针对ajax的特定处理函数?(这不是问题,只是旁注)
最合适的回答,由SO网友:s_ha_dum 整理而成
您说页面URL是http://localhost:8888/dev_wordpress/wp-admin/admin.php?page=mfgroups&mingleforum_action=usergroups&do=add_user_togroup
但您正在尝试加载http://localhost:8888/tankards_wordpress/wp-admin/wpf-addusers.php?usergroup=The+Freedom
. 这些不匹配的地方有很多,但我不能百分之百确定两者之间的关系。你的问题在这方面不清楚。
然而,即使你得到了.php
要通过这样的直接访问加载的文件--http://localhost:8888/tankards_wordpress/wp-admin/wpf-addusers.php?usergroup=The+Freedom
--, 这行不通。如果像WordPress不加载那样直接加载文件,则意味着不会定义WordPress函数,并且该文件依赖于WordPress函数。
您应该使用AJAX API 因此,对于WordPress上下文中使用的几乎所有AJAX,可能不包括需要极高性能的情况。
将PHP写入如下回调函数:
add_action(\'wp_ajax_my_action\', \'my_action_callback\');
function my_action_callback() {
// your PHP
die(); // this is required to return a proper result
}
并通过
my_action
作为AJAX的一部分
POST
数据,如下所示:
var data = {
action: \'my_action\',
whatever: 1234
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
alert(\'Got this from the server: \' + response);
});
(
Both example code blocks more or less cribbed from the Codex)