将/ php文件输出分配/回显给php变量

时间:2016-06-13 21:23:37

标签: php variables

我正在编写一个实时搜索歌词上传表单。我已经创建了一个小脚本,我将对其进行AJAX调用。它会返回artistalbumsong条记录。输出JSON将在JS中使用。

// get_records.php

include_once("connect2db.php");

if (empty($_GET)) {
    $artists = json_encode(mysqli_fetch_all($mysqli->query("SELECT artist from `artists`"), MYSQLI_ASSOC));
    echo $artists;
} else {
    if (isset($_GET["artist"])) {
        $artist = test_input($_GET["artist"]);
        if (isset($_GET["album"])) {
            // ...
            echo $songs;
        } else {
            // ...
            echo $albums;
        }
    }
}

$mysqli->close();

这很简单。专为三种情况设计:

  • get_records.php // returns artists
  • get_records.php?artist=XXX // returns albums of XXX
  • get_records.php?artist=XXX&album=YYY // returns songs from the album YYY that belongs to XXX

在表单页面中,我希望artists在任何输入之前已经被赋予JS变量。我不想为此使用AJAX。我可以使其工作的一种方式是:

<?php
    echo "var artists = ";
    include("get_records.php");
    echo ";";
?>

但这似乎错了。有没有办法像这样做

<?php
    echo "var artists = " . get_output("get_records.php") . ";";
?>

你知道,获取php文件的输出,而不是它的内容吗?

1 个答案:

答案 0 :(得分:0)

您可以将代码放在函数中,然后根据需要从其他脚本中调用它。

主要剧本:

 <?php

// get_records.php

function execute()
{
    // get_records.php

    include_once("connect2db.php");

    if (empty($_GET)) {
        $artists = json_encode(mysqli_fetch_all($mysqli->query("SELECT artist from `artists`"), MYSQLI_ASSOC));
        $response = $artists;
    } else {
        if (isset($_GET["artist"])) {
            $artist = test_input($_GET["artist"]);
            if (isset($_GET["album"])) {
                // ...
                $response = $songs;
            } else {
                // ...
                $response = $albums;
            }
        }
    }

    $mysqli->close();

    return $response;
}

Ajax脚本:

<?php
// ajax_script.php

include_once("get_records.php");

echo execute();

表单脚本

<?php

// Form File - form_file.php
include_once("get_records.php");

$content = execute();

$response = "<script> var artists = $content ; </script>";

echo $response;