在javascript文件中获取buddypress用户名
在buddypress PHP模板中,我通常通过如下方式引用用户ID来获取任何给定用户的用户名:-在javascript文件中获取buddypress用户名,javascript,jquery,buddypress,Javascript,Jquery,Buddypress,在buddypress PHP模板中,我通常通过如下方式引用用户ID来获取任何给定用户的用户名:- <?php echo bp_core_get_username( '{{userID}}' ) ?> 但是,我需要从外部Javascript文件中检索用户名 用户ID已作为var aData[11]传入。我尝试了以下方法,但没有成功:- $('td:eq(3)', nRow).html( '<div class="table-row"><a href="htt
<?php echo bp_core_get_username( '{{userID}}' ) ?>
但是,我需要从外部Javascript文件中检索用户名
用户ID已作为var aData[11]传入。我尝试了以下方法,但没有成功:-
$('td:eq(3)', nRow).html( '<div class="table-row"><a href="http://www.mysite.com/members/' + <?php echo bp_core_get_username( '"' + aData[11] + '"' ) ?> + '/song/?songsID=' + aData[10] + '"><h4 class="nomargin">' + aData[0] + '</h4></a>' + aData[1] + '</div>' );
$('td:eq(3)”,nRow).html(''+aData[1]+'');
我正在尝试返回一个URL。。。这给了我:
它应该是什么:
用户名/song/?songsID=6
有什么想法吗
编辑:下面是我用来输出JSON的服务器端代码
<?php
$aColumns = array( 'song_name', 'artist_band_name', 'author', 'song_artwork', 'song_file', 'genre', 'song_description', 'uploaded_time', 'emotion', 'tempo', 'songsID', 'user' );
$sIndexColumn = "songsID";
/* DB table to use */
$sTable = "wp_dbt_songs";
/* Database connection information */
$gaSql['user'] = "";
$gaSql['password'] = "";
$gaSql['db'] = "";
$gaSql['server'] = "";
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
die( 'Could not open connection to server' );
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
die( 'Could not select database '. $gaSql['db'] );
$sLimit = "";
if ( isset( $_GET['iDisplayStart'] ) && $_GET['iDisplayLength'] != '-1' )
{
$sLimit = "LIMIT ".mysql_real_escape_string( $_GET['iDisplayStart'] ).", ".
mysql_real_escape_string( $_GET['iDisplayLength'] );
}
if ( isset( $_GET['iSortCol_0'] ) )
{
$sOrder = "ORDER BY ";
for ( $i=0 ; $i<intval( $_GET['iSortingCols'] ) ; $i++ )
{
if ( $_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == "true" )
{
$sOrder .= $aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."
".mysql_real_escape_string( $_GET['sSortDir_'.$i] ) .", ";
}
}
$sOrder = substr_replace( $sOrder, "", -2 );
if ( $sOrder == "ORDER BY" )
{
$sOrder = "";
}
}
$sWhere = "";
if ( $_GET['sSearch'] != "" )
{
$sWhere = "WHERE (";
for ( $i=0 ; $i<count($aColumns) ; $i++ )
{
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
}
$sWhere = substr_replace( $sWhere, "", -3 );
$sWhere .= ')';
}
/* Individual column filtering */
for ( $i=0 ; $i<count($aColumns) ; $i++ )
{
if ( $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' )
{
if ( $sWhere == "" )
{
$sWhere = "WHERE ";
}
else
{
$sWhere .= " AND ";
}
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string($_GET['sSearch_'.$i])."%' ";
}
}
$sQuery = "
SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))."
FROM $sTable
$sWhere
$sOrder
$sLimit
";
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
/* Data set length after filtering */
$sQuery = "
SELECT FOUND_ROWS()
";
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
$iFilteredTotal = $aResultFilterTotal[0];
/* Total data set length */
$sQuery = "
SELECT COUNT(".$sIndexColumn.")
FROM $sTable
";
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
$aResultTotal = mysql_fetch_array($rResultTotal);
$iTotal = $aResultTotal[0];
$output = array(
"sEcho" => intval($_GET['sEcho']),
"iTotalRecords" => $iTotal,
"iTotalDisplayRecords" => $iFilteredTotal,
"aaData" => array()
);
while ( $aRow = mysql_fetch_array( $rResult ) )
{
$row = array();
for ( $i=0 ; $i<count($aColumns) ; $i++ )
{
if ( $aColumns[$i] == "version" )
{
/* Special output formatting for 'version' column */
$row[] = ($aRow[ $aColumns[$i] ]=="0") ? '-' : $aRow[ $aColumns[$i] ];
}
else if ( $aColumns[$i] != ' ' )
{
/* General output */
$row[] = $aRow[ $aColumns[$i] ];
}
}
$output['aaData'][] = $row;
}
echo json_encode( $output );
?>
您正在设置的html是在客户端而不是服务器端设置的,这意味着不会对php代码进行评估
我想您可以做的是将已经计算过的用户名放在一个隐藏的标记中,然后使用jquery获得它,或者将它暴露在脚本标记中页面上的javascript中
编辑:json中的用户ID
或用户名也是如此吗?如果没有,你可以把它放在那里。我还是不太确定情况如何。但是,如果您当前正在json中传递userID
,并且实际希望用户名作为bp\u core\u get\u username
返回,为什么不将已经检索到的用户名(使用bp\u core\u get\u username
)也放在json中呢
换句话说,在php代码中,使用bp\u core\u get\u username
根据用户ID计算用户名,然后将其传递到json中。也就是说,如果我正确理解情况的话。当然。。。我现在觉得自己很愚蠢。但是,您的第一个建议是禁止,因为此链接位于javascript循环中。(我将Json数据返回到一个可筛选的表中)。你能详细说明一下你的第二个建议吗?我不太清楚我该怎么做。谢谢,实际上我的两个建议都假设您可以访问服务器端的userID
,因此可以从中预取用户名。然后,您所要做的就是找到一种在页面上公开该用户名的方法,以便javascript能够获取该用户名。您可以将用户名放在一个隐藏的标记中,然后让jquery从那里获取用户名并将其插入到您的链接中,或者让php将其嵌入源标记中,以便可以将其作为javascript变量访问。这两条路线对我来说似乎都很混乱,但根据您目前提供的信息,我只能提供这些路线。谢谢您花时间帮助我Jorge。。。如果我能更详细地解释一下,也许你能给我指出更接近解决方案的地方。我有一个服务器端脚本,它以JSON格式输出SQL表的内容。这个JSON数据被输入到一个表中,该表在客户端呈现。在数据库中,用户作为ID存储,但为了在每行中呈现URL,我需要返回完整的buddypress用户名。我想操纵服务器端脚本来执行用户名get可以满足我的需要吗?如果我发布我的服务器端脚本会有帮助吗?我已经更新了我的问题以包含我的服务器端代码。谢谢Hanks Jorge,我认为你是对的,这是最好的选择。你理解正确。我在JSON中有用户ID,需要在服务器端代码中使用bp_core_get_username来返回实际的用户名,而不仅仅是ID(我实际上需要返回这两个用户名,因为我需要的只是其他东西的ID)。问题是我对使用JSON比较陌生,我认为我自己无法修改代码。我真的很感谢你的帮助。