如何将PHP变量添加到此Javascript中?

时间:2015-09-11 10:59:35

标签: javascript php jquery mysql ajax

我尝试使用ajax过滤器构建一个简单的新闻页面,具体取决于用户想要查看的类别。下面的javascript连接到php文件,并使用mysql数据库中的数据输出HTML。我需要知道如何告诉JS将数据放在"标题"列成一个php变量,以便它将它包装在正确的href链接中。

这是创建标题和链接的php

$data_fields = '`id`, `heading`, `date`, `copy`, `summary`, `article`, `press_release`, `video`';
$from = '`media`';

$news_result = $db->selectByStrings($data_fields, $from, $where_conditions, $order_by);
$news = $db->getAllRows($news_result);

foreach ($news as $new) {
    echo '<h2 class="news"><a class="news" href="'.$base_href.$new['id'].'">'.$new['heading'].'</a></h2>';
}

我不知何故需要包含这个单独的JS文件,确保它只应用于标题列中的数据。

的Javascript

function makeTable(data) {
    var tbl_body = "";
    $.each(data, function () {
        var tbl_row = "";
        $.each(this, function (k, v) {
            tbl_row += "<div class='row'><div class='col-md-8 col-md-offset-2'>" + v + "   </div></div>";
        });
        tbl_body += "<div class='non-white'>" + tbl_row + "</div>";
    });
    return tbl_body;
}

function getEmployeeFilterOptions() {
    var opts = [];
    $checkboxes.each(function () {
        if (this.checked) {
            opts.push(this.name);
        }
    });
    return opts;
}

function updateEmployees(opts) {
    $.ajax({
        type: "POST",
        url: "filter3.php",
        dataType: 'json',
        cache: false,
        data: {filterOpts: opts},
        success: function (records) {
            $('#employees div').html(makeTable(records));
        }
    });
}

var $checkboxes = $("input:checkbox");
$checkboxes.on("change", function () {
    var opts = getEmployeeFilterOptions();
    updateEmployees(opts);
});
updateEmployees();

上面的php文件连接到:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=xxx', 'xxx', 'xxx');
$select = 'SELECT heading, summary, created_date';
$from = ' FROM media';
$where = ' WHERE TRUE';
$opts = isset($_POST['filterOpts']) ? $_POST['filterOpts'] : array('');
if (in_array("article", $opts)) {
    $where .= " AND article = 1";
}
if (in_array("press_release", $opts)) {
    $where .= " AND press_release = 1";
}
if (in_array("video", $opts)) {
    $where .= " AND video = 1";
}
$sql = $select.$from.$where;
$statement = $pdo->prepare($sql);
$statement->execute();
$results = $statement->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($results);
echo($json);
?>

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找这样的东西:

var base_href = 'http://www.stackoverflow.com/';
function makeTable(data) {
    var tbl_body = "";
    $.each(data, function (index, row) {
        var tbl_row = "";
        $.each(row, function (k, v) {
            if(k == 'heading' && 'id' in row) {
                v = '<a class="news" href="' + base_href + row.id +'">' + v + '</a>';
            }
            tbl_row += "<div class='row'><div class='col-md-8 col-md-offset-2'>" 
            + v + "   </div></div>";
        });
        tbl_body += "<div class='non-white'>" + tbl_row + "</div>";
    });
    return tbl_body;
}