2016-06-13 4 views
1

Я кодирую прямой поиск текста для загрузки текста. Я создал небольшой скрипт, на который я буду звонить AJAX. Он возвращает artist, album и song записей. Выходной JSON будет использоваться в JS.Assign/echo php file output to php variable

// 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 быть уже assinged переменной JS перед любым входом. Я не хочу использовать AJAX для этого. Один из способов заставить его работать:

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

но это просто кажется неправильным. Есть ли способ сделать это, как этот

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

вы знаете, получить выход файла PHP, а не его содержание?

+1

Как насчет 'эхо "вар художников =". file_get_contents ("http: //localhost/get_records.php"). ";"; '? – revo

+0

@revo Уже пробовал это. Это просто считывает содержимое файла и возвращает его как строку. Не выполняет код внутри файла. – akinuri

+1

это должно работать нормально, потому что вы включаете его внутри php-файла, поэтому вывод будет выводимым, а не содержимым php-кода. –

ответ

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;