2016-07-18 2 views
-1

Я пытаюсь реализовать Tokenize2 на моей странице.Могу ли я использовать file_get_contents() для динамически генерируемого вывода JSON?

Часть коды для извлечения данных из источника JSON включает следующую строку:

$obj = json_decode(file_get_contents('search_list.json'), true);

У меня есть search_list.php где я извлечение данных из базы данных MySQL и генерировать контент в формате JSON. Но если я положил search_list.php в file_get_contents(), он, похоже, не сработает. Есть ли способ обойти это? Благодарю.

+0

Вам нужно будет сделать запрос на * HTTP-сервер *, где фактически будет выполняться PHP, например. 'HTTP: // локальный/search_list.php'. Но так как вы выполняете PHP, кодируя некоторый результат как JSON, выводите JSON через HTTP, читаете HTTP и декодируете JSON в массив PHP ..... Просто пропустите все это промежуточное программное обеспечение и непосредственно выполните тот же PHP-код, что и в 'search_list.php'; возможно, вам просто нужно включить эту логику в функцию, которую вы можете «включить» и вызвать. – deceze

+0

'allow_url_fopen' должно быть открыто на вашем сервере - проверьте настройки php. Другие варианты, предлагаемые на http://stackoverflow.com/questions/3488425/php-ini-file-get-contents-external-url – dbmitch

ответ

2

file_get_contents() не выполняет код. Это просто отстой в некоторых байтах, в основном обертка вокруг fopen(); fread(); fclose(). Вот и все.

У вас должен быть include ваш скрипт, например.

ob_start(); 
include('yourscript.php'); 
$json = ob_end_clean(); 

, но в тот момент, вы должны спросить себя, в то время как вы собираетесь все проблемы, включая/выполнение этого сценария, заставляя его создать строку JSON, и разрывают эту JSon строку на части в массив PHP еще раз. Полная и абсолютная трата ресурсов процессора.

Вы должны сделать что-то лучше, как:

function whatever($output = 'json') { 
     ... build data structure 
     if ($output == 'json') { 
     echo json_encode($data); 
     } else 
     return $data; 
     } 
    } 

Это уже PHP-код, вы уже имели все данные в структуре данных PHP, так почему расточительного шаг данных-> json-> данных ?

+0

Спасибо за совет, я попробую. У меня был некоторый код автозаполнения, который использовал мой PHP-скрипт в качестве источника данных, и он принял это правильно, поэтому я пытался его повторно использовать. Я немного подкорректирую данные, поэтому буду следовать вашей последней рекомендации. – eluong

Смежные вопросы