Могу ли я использовать PHP, чтобы получить внешний XML-файл для использования JQuery? - PullRequest
2 голосов
/ 21 декабря 2009

Я пытаюсь загрузить пользовательские результаты поиска Google XML на страницу PHP, а затем манипулировать XML с помощью JQuery.

Я понимаю, что не могу использовать javascript для захвата XML-файла, так как он находится во внешнем домене, но могу ли я использовать PHP для получения XML-файла с сервера, а затем сделать его доступным для JQuery в виде XML-файла или другого DOM структуры, поэтому я могу затем просмотреть этот XML, используя, например:

$(resultXml).find("R").each(function(){
    $("ul.results").append("<li>"+$(this).find("S")+"</li>");
});

где resultXml - это объект XML.

URL-адрес XML выглядит примерно так:

http://www.google.com/cse?cx=XXXXXXX&client=google-xxxx&output=xml_no_dtd&q=$keyword

Где ключевое слово $ передается на страницу PHP в строке GET.

Я хорошо разбираюсь во внешнем интерфейсе, но не так хорошо на стороне сервера (именно поэтому я не разбираю XML в PHP), и я озадачен тем, как бы я взял XML в PHP и преобразование этого в форму, которую JQuery может анализировать (возможно, используя json_encode?). Я читал о нескольких способах включения внешнего файла в PHP с использованием таких функций, как fopen, но, похоже, есть много предостережений относительно прокси и разрешений.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 21 декабря 2009

в php вы можете получить ваши данные в формате json, используя

<?php
   $json = json_encode(file_get_contents("http://www.google.com/cse?cx=XXXXXXX&client=google-xxxx&output=xml_no_dtd&q=$keyword"));
?>

затем назначьте его переменной javascript

<script>var json = <?= $json; ?></script>

теперь используйте jQuery для выполнения чего угодно с переменной json

2 голосов
/ 21 декабря 2009

Это направит вас на правильный путь:

<?php
echo file_get_contents("http://www.google.com/cse?cx=XXXXXXX&client=google-xxxx&output=xml_no_dtd&q=$keyword");

Вы можете узнать больше о jQuery и XML здесь.

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