【问题标题】:Getting buddypress user name in a javascript file在 javascript 文件中获取 buddypress 用户名
【发布时间】:2011-09-30 07:09:32
【问题描述】:

在我的 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>' );

我正在尝试返回一个 URL...这确实给了我:

http://www.mysite.com/members//song/?songsID=6

应该是什么:

http://www.mysite.com/members/用户名/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 );
?>

【问题讨论】:

    标签: javascript jquery buddypress


    【解决方案1】:

    您设置的 html 是在客户端设置的,而不是在服务器端设置的,这意味着不会评估 php 代码。

    我猜你可以做的是将已经评估的用户名放在隐藏标签中,然后使用 jquery 获取它,或者将其暴露给脚本标签内页面上的 javascript。

    编辑userID 或 json 中的用户名也是如此吗?如果没有,你可以把它放在那里。我仍然不太确定情况如何。但是,如果您当前在 json 中传递 userID 并且实际上希望用户名 bp_core_get_username 会返回它,为什么不将已经检索到的(使用 bp_core_get_username)用户名也放入 json 中?

    换句话说,在您的 php 代码中,根据带有bp_core_get_username 的用户 ID 确定用户名是什么,然后将其传递到 json 中。也就是说,如果我对情况的理解正确的话。

    【讨论】:

    • 当然……我现在觉得自己很蠢。但是,您的第一个建议是不可行的,因为此链接位于 javascript 循环中。 (我将 Json 数据返回到一个可过滤的表中)。你能否详细说明你的第二个建议,因为我不太清楚我将如何去做。谢谢
    • 实际上我的两个建议都假设您可以访问服务器端的userID,因此可以从中预取用户名。然后您所要做的就是找到一种在页面上公开该用户名的方法,以便 javascript 可以获取它。您可以通过将用户名放在隐藏标签中来做到这一点,然后让 jquery 从那里获取它以将其插入到您的链接中,或者您可以让您的 php 将其嵌入到 source 标签中,以便它可以作为 javascript 变量访问。两条路线对我来说似乎都很混乱,但根据您目前提供的信息,我能提供的就是它们了。
    • 感谢您抽出宝贵时间来帮助我 Jorge... 如果我更详细地解释一下,您也许可以让我更接近解决方案。我有一个服务器端脚本,它以 JSON 格式输出 SQL 表的内容。此 JSON 数据被输入到客户端呈现的表中。在数据库中,用户存储为 ID,但为了在每一行中呈现 URL,我需要返回完整的 buddypress 用户名。我想操纵服务器端脚本来执行用户名获取会做我需要的吗?如果我发布我的服务器端脚本会有帮助吗?
    • 我已更新我的问题以包含我的服务器端代码。谢谢
    • 感谢 Jorge,我认为您是正确的,这将是最好的选择。你理解正确。我在 JSON 中有用户 ID,需要在我的服务器端代码中使用 bp_core_get_username 来返回实际用户名,而不仅仅是 ID(我实际上需要返回两者,因为我只需要 ID 来做其他事情)问题是我我对使用 JSON 比较陌生,并且认为我不能自己修改代码。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多