通过数据库调用在PHP中创建一个列表

时间:2014-08-11 04:03:49

标签: php jquery ajax

我需要创建此列表(在javascript中):

var videoList = ['GACS1.mp4','GACS4.mp4'];

从致电DB。所以在DB中我有一个字段,我打电话来让那些mp4回来。

这是function.php,它实际上只是一个处理请求的Ajax页面。

function assignedvideos()
{
    global $db_name, $path;
    $uid = $_GET['uid'];
    $selectedvideos = ORM::for_table('movies1')->raw_query('SELECT B.ID AS bid, B.*, LX.* FROM movies1 LX JOIN movies B ON LX.movieid = B.id JOIN locations L ON LX.locationid = L.id JOIN tablets T ON LX.locationid = T.tabletlocation WHERE T.uniqueid =".uid." ORDER BY LX.order ASC')->find_many();
    if($selectedvideos)
    {
        foreach ($selectedvideos as $row) 
        {
            $row['movielocation'] = stripslashes($row['movielocation']);
            $row['moviename'] = stripslashes($row['moviename']);
        }   
    }
    die();
}

当然,这里是调用ajax页面来检索function.php页面来检索值。

$something = $_GET['uid'];     
jQuery.ajax({
    url: 'function.php',
    type: "POST",
    data: 'action=assignedvideos&uid='+$something,
    success: function (response) {                          
    },
    error: function (response) {
    }
});

问题是它是否在AJAX中构建并以字符串形式发回,如果是这样的话?

或者AJAX是否返回变量列表并在AJAX调用的成功响应中构建列表?如果是这样,那怎么样?

1 个答案:

答案 0 :(得分:1)

为了方便自己,将要发送回客户端的任何值放入变量中,然后调用

echo json_encode($somevar);

在您的情况下,还有一个问题,

foreach ($selectedvideos as $row) 
    {
        $row['movielocation'] = stripslashes($row['movielocation']);
        $row['moviename'] = stripslashes($row['moviename']);
    } 

$row在循环的每次迭代中被替换为来自$slectedvideos中下一行的新数据,因此在foreach $row将包含最后一行之后,您的操作基本上什么都不做来自$selectedvideos的数据。 (另外,$row不会修改$selectedvideos)。如果你想修改$selectedvideos,有很多方法可以做到这一点,但是如果没有太多改变你的代码,你可以做到

foreach ($selectedvideos as $key => $row) 
    {
        $selectedvideos[$key]['movielocation'] = stripslashes($row['movielocation']);
        $selectedvideos[$key]['moviename'] = stripslashes($row['moviename']);
    } 

然后

echo json_encode($selectedvideos);

然后您可以使用JSON.parse()

在成功通话中转换为javascript对象

请注意,在这种情况下,javascript对象看起来并不完全是您希望数据的外观,而是它将是一个对象数组,array[0].movielocation将是(如果我没有记错的话)第一部电影等的文件位置 如果您希望它完全是一个文件路径数组,那么foreach循环可能如下所示:

$output = array();
foreach ($selectedvideos as $row) 
    {
         $output[] = stripslashes($row['movielocation']);
    } 

echo json_encode($output);

另请注意,在文件位置使用stripslashes会强制您将所有视频放在服务器上的同一文件夹中,或者以某种形式或形式使用mod_rewrite。