читать JSON в PHP из JavaScript - PullRequest
1 голос
/ 16 мая 2011

У меня есть API, который доступен только в javascript (без PHP). Он выбирает некоторые данные, из которых я сделал строку JSON. Что мне нужно знать, это как читать эту строку на другой странице?

Я пытался использовать следующее:

$json = file_get_contents($url);

но, конечно, полученная мной строка - не JSON, а фактически код javascript, который сгенерирует json на исходной странице. Какие-либо предложения ? Спасибо.

P.S. Я также попытался установить cookie + перенаправление. Хотя это сработало, я хотел бы узнать лучшее решение.

Вот код JavaScript

            function searchComplete() {

                 if (imageSearch.results && 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;
                  }
            }

Ответы [ 3 ]

2 голосов
/ 16 мая 2011

PHP имеет отличный модуль для него:

json_encode
json_decode
1 голос
/ 16 мая 2011

Хорошо, вы сказали, что это не JSON. Таким образом, функция json_decode () здесь бесполезна без дополнительных вещей. Если это происходит на стороне браузера, вам, вероятно, следует передать данные на сервер с помощью AJAX.

В качестве альтернативы вы можете посмотреть, как работает этот API (возможно, он соединяется с каким-либо сервером, использующим JSON для обмена данными?) И сделать то же самое в PHP.

EDIT:

Вам не нужно создавать строку 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.

0 голосов
/ 16 мая 2011

Создайте себе веб-страницу, которая выполняет javascript и сохраняет результат JSON. Затем отправьте данные JSON в сценарий PHP (через XmlHttpRequest или обычную форму POST). Теперь ваш PHP-код имеет доступ к данным JSON, и вы можете использовать json_decode для доступа к ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...