чтение JSON в PHP из javascript

#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