#php #javascript #json
#php #javascript #json
Вопрос:
У меня есть API, который доступен только на javascript (без PHP). Он извлекает некоторые данные, из которых я создал строку JSON. Что мне нужно знать, так это как мне прочитать эту строку на другой странице?
Я попытался использовать следующее :
$json = file_get_contents($url);
но, конечно, строка, которую я получаю, не является JSON, а на самом деле является кодом javascript, который сгенерирует json на исходной странице. Есть предложения?
Спасибо.
P.S. Я также попробовал установить cookie перенаправление. Хотя это сработало, я хотел бы знать лучшее решение.
Вот код javascript
function searchComplete() {
if (imageSearch.results amp;amp; imageSearch.results.length > 0)
{
var contentDiv = document.getElementById('content');
contentDiv.innerHTML = '';
var results = imageSearch.results;
var data = "{['data' : [n";
for (var i = 0; i < results.length; i ) {
//var result = results[i];
var result = results[i];
data = "{n";
data = "'url' : '" result.url "'";
data = "n},n";
}
data = "]]}";
setCookie("datajson", data, 1); // This is how i set the cookie and redirected
window.location = "JSPHP.php?data=" data;
document.getElementById('body').innerHTML = data;
}
}
Комментарии:
1. Можете ли вы показать, как выглядит Javascript?
Ответ №1:
В PHP есть отличный модуль для этого:
json_encode
json_decode
Комментарии:
1. михсат сказал:
the string I get is not JSON but is actually the javascript code that will generate json in original page
. Как вы хотите использовать json_decode () для синтаксического анализа кода JavaScript?
Ответ №2:
Хорошо, вы сказали, что это не JSON. Таким образом, функция json_decode() здесь бесполезна без дополнительных функций. Если это происходит на стороне браузера, вам, вероятно, следует передать данные на сервер с помощью AJAX.
В качестве альтернативы вы можете взглянуть, как работает этот API (возможно, он подключается к какому-либо серверу, используя JSON для обмена данными?), и сделать то же самое в PHP.
Редактировать:
Вам не нужно создавать строку JSON на стороне JavaScript. JSON сам по себе является объектной нотацией в JavaScript.
Если вам нужно передать данные, просто сделайте что-то похожее на это:
var data = [];
for (var i=0; i<results.length; i ){
data[] = {
'url': result.url
};
}
Затем вам нужно только передать эти данные на сервер. Вы можете использовать функцию .get() (если вам нужно передать ее с помощью GET) из jQuery следующим образом:
jQuery.get('http://example.com/', data, function(){
// something to do when successful
});
Это довольно просто и основное заключается в следующем: правильно создайте данные и передайте их на сервер с помощью вызова AJAX.
Ответ №3:
Создайте самостоятельно веб-страницу, которая выполняет javascript и сохраняет результат JSON. Затем отправьте данные JSON в PHP-скрипт (через XMLHttpRequest или обычную форму POST). Теперь ваш PHP-код имеет доступ к данным JSON, и вы можете использовать json_decode
для доступа к ним.
Комментарии:
1. Я попробовал то же самое, используя cookie (добавлен код). Проблема в том, что я хочу получить доступ к своему json с другой (третьей) страницы, возможно, с другого веб-сайта. Проблема в том, какую страницу мне вызвать. Если я вызову первый, это бесполезно. Но если я вызываю second, с ним нет cookie.
2. Хотя использование базы данных — это вариант, это будет позор .. lol