在javascript文件中获取buddypress用户名

在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

在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="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比较陌生,我认为我自己无法修改代码。我真的很感谢你的帮助。