Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: JS-скрипт для вывода результата работы PHP-скрипта в заданном месте страницы
 
 автор: Tycoon   (06.11.2009 в 08:53)   письмо автору
 
 

Мне нужно написать JS-скрипт для вывода результата работы PHP-скрипта в заданном месте страницы, php файл обрабатывает ХМЛ файл и получает курс валют, считывает http://cbr.ru/scripts/XML_daily.asp, а затем получает массив и выводит ХТМЛ, мне нужно чтобы JS както обрабатывал этот пхп скрипт т.е. результаты полученные их хмл файла и выводил их (не средствами ПХП а именно JS)

  Ответить  
 
 автор: sim5   (06.11.2009 в 09:22)   письмо автору
 
   для: Tycoon   (06.11.2009 в 08:53)
 

Передайте курсы в JS сцеарий как массив (объект), и выводите функцией. Либо AJAX запрос и ответ в JSON формате. Например:
1) - печатаете в теле ответа (HTML страницы):

<script>
var usd = [<?=26.3423;?><?=-0.3647;?>];
var eur  = [<?=4.2312;?><?=0.3647;?>];
//или объектом
var current = {'usd':[<?=26.3423;?><?=-0.3647;?>], 'eur':[<?=-4.2312;?><?=0.3647;?>]};
//далее эти переменные используете в JS сценарии
<script>

2) - запросом AJAX можете передавать объект current, применяя к нему eval, и далее использовать.
В примере подстановка РНР значений показана когда разрешен короткий РНР тег.

  Ответить  
 
 автор: Tycoon   (06.11.2009 в 10:00)   письмо автору
 
   для: sim5   (06.11.2009 в 09:22)
 

а не могли бы подсказать как быть в моем приемере:

$url = file_get_contents("http://cbr.ru/scripts/XML_daily.asp");
$filename = 'curs/currency.xml';
file_put_contents($filename, $url);
$array = file($filename);
unset($array[0]);
$xml = implode("", $array);
$html = transform($xml, "currency");
return $html;


а это ХСЛТ трансформация :

<?xml version="1.0" encoding="windows-1251" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" encoding="windows-1251" />

<xsl:template match="Valute">
<xsl:if test="NumCode='840' or NumCode=978 ">

<ul> 
     <li>
     <xsl:value-of disable-output-escaping="yes" select="Name" />  - 
         <b><xsl:value-of disable-output-escaping="yes" select="Value" /></b>
     </li>
</ul>
</xsl:if>
    </xsl:template>

</xsl:stylesheet>

Помогите кто может :)

  Ответить  
 
 автор: sim5   (06.11.2009 в 10:30)   письмо автору
 
   для: Tycoon   (06.11.2009 в 10:00)
 

Вы в вопросе задали - "на JS", в контент же вы отдаете XML, зачем? Чего вы хотите?

  Ответить  
 
 автор: Tycoon   (06.11.2009 в 10:39)   письмо автору
 
   для: sim5   (06.11.2009 в 10:30)
 

1. Курсы валют находятся в заданном xml-файле. Файл будет ежедневно обновляться (http://cbr.ru/scripts/XML_daily.asp).
2. Выводить курсы в виде ненумерованного списка с флагом страны слева от курса валюты. (XML можно сразу отправлять на XSL-трансформацию

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

  Ответить  
 
 автор: sim5   (06.11.2009 в 10:52)   письмо автору
 
   для: Tycoon   (06.11.2009 в 10:39)
 

Значит так. Если вам нужны курсы валют с флажками и т.п., то вы должны пропарсить исходный XML файл, взять из него необходимые курсы валют, и эти переменные вставить в HTML-код, либо, если требуется работа с ними на клиенте, передать их как переменные в JS сценарий, как я уже показывал выше.

  Ответить  
 
 автор: sim5   (06.11.2009 в 13:04)   письмо автору
 
   для: Tycoon   (06.11.2009 в 10:00)
 

В ответ на e-mail

Я не пользуюсь Аськой, хотя в принципе могу выйти на нее через Яшу. Но не буду, я не каждому даю свой контак онлайн связи, мне просто некогда веси разговоры и переписку.

А теперь о JS. Я не знаю xml, и не могу сказать вам, можете ли вы из того, что передаете на клиент выудить необходимое, чтобы использовать в сценарии. К тому же не понимаю, зачем вам передавать это клиенту, если вам нужны только значения, для дальнейшего оперированиями ими. Остальное я вроде бы сказал уже, повторю еще раз.

Здесь неоднократно приводился скрипт (таковой есть на softime, в разделе приложений) получения курса валют. Курс вы должны получать раз в сутки, и за сутки на стороне сервера вполне хватит время отпарсить запрос и получить курс.

Далее, при запросе страницы пользователем, отдаете значения курсов валют в JS-сценарий, например, в теле страницы выводим скрипт, в который подставляем РНР значения курсов:

<?
//получаем из базы ранее полученные данные курсов,
//и к примеру они равны:
$usd 33.33;
$eur 44.44;
//далее значения этих переменных передаем в JS 
?>
<script>
var current = {'usd':[<?=$usd;?>],'eur':[<?=$eur;?>]};
</script>

После этого пользователь может обратиться к этим значениям в JS-сценарии, к примеру по клику на некую кнопку, обратившись к функции:

<script>
function getCurrent(src){
   alert(current[src]);
}
</script>
<INPUT TYPE="button" VALUE="GET" ONCLICK="getCurrent('usd')">

Вот в принципе и все, чего вам конкретно надо, я не в курсе.

  Ответить  
 
 автор: Tycoon   (09.11.2009 в 13:02)   письмо автору
 
   для: sim5   (06.11.2009 в 13:04)
 

а не знаете как это сделать на AJAX с использованием jquery, т.е. динамическая загрузка контента при помощи jquery в моем случае из пхп файла который уже получил курс валют

  Ответить  
 
 автор: sim5   (09.11.2009 в 13:35)   письмо автору
 
   для: Tycoon   (09.11.2009 в 13:02)
 

http://softtime.ru/forum/read.php?id_forum=4&id_theme=69436&page=1

  Ответить  
 
 автор: Tycoon   (11.11.2009 в 08:49)   письмо автору
 
   для: sim5   (09.11.2009 в 13:35)
 

Сейчас пришол к следующему этапу:
///////////////// Загружаю ХМЛ и трансофрмирую его в ХСЛТ (test.php)

$url = file('curs/XML_daily.xml');
unset($url[0]);
$xml = implode("", $url);
$html = transform($xml, "currency");
return $html;


далее

подключаю Ажакс

<script type="text/javascript" src="jquery.js"></script>
</head>

<body>
    
    <div id="content"></div> // контейнер, в который мы будем загружать контент
    
    <script>
        function show()  // вызываем функцию show(), в которой прописан механизм получения контента из test.php
        {
            $.ajax({
                url: "test.php",
                cache: false,
                success: function(html){
                    $("#content").html(html); //При успешном выполнении запроса, управление переходит функции, которая получает контент в
 качестве параметра и записывает его контейнер
                }
            });
        }
    
        $(document).ready(function(){
            show();
            setInterval('show()',1000); 
        });
    </script>
    
</body>


но в хмл файле несколько валют и выводится все а мне нужно чтобы на стороне клиента можно было задать параметр в котором можно было бы в ручную указать какие валюты отображать, не могли бы подсказать?

  Ответить  
 
 автор: sim5   (11.11.2009 в 09:20)   письмо автору
 
   для: Tycoon   (11.11.2009 в 08:49)
 

Я же вам дал ссылку на тему в HTML потому, что прекрепил там CHM файл описания jQuery API. В описании прочитайте как передать переменные в AJAX-запросе, ну например, {'usd': 1}, и т.п.. Будете получать необходимую вам валюту.

  Ответить  
 
 автор: Tycoon   (12.11.2009 в 12:51)   письмо автору
 
   для: sim5   (11.11.2009 в 09:20)
 

require_once("xml2json.php");
$testXmlFile = "test1.xml";
file_exists($testXmlFile) or die('Could not find file ' . $testXmlFile);
$xmlStringContents = file_get_contents($testXmlFile); 
$jsonContents = "";
echo $jsonContents = xml2json::transformXmlStringToJson($xmlStringContents);


function show()

        {
            $.get("currency.php", function(data){
            $("#content").html(data);

}

);
            

        }

    
        $(document).ready(function(){
            show();
            //setInterval('show()',1000);
        });


строка полученная в виде json имеет вид :

{"contacts":{"contact":[{"name":"John Doe","phone":"123-456-7890"},{"name":"Jane Doe","phone":"123-456-0000"},{"name":"John Smith","phone":"123-456-1111"},{"name":"Jane Smith","phone":"123-456-9999"}]}}>

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

пробовал делать так:
$.get("currency.php", { name: "John Doe", phone: "123-456-7890" }, function(data)


чтобы вывести тока 1 имя и телеофн к примеру, выводи все все равно

  Ответить  
 
 автор: sim5   (12.11.2009 в 13:27)   письмо автору
 
   для: Tycoon   (12.11.2009 в 12:51)
 

Что-то во всем этом логики нет, то есть, если на сервер делать запрос name: "Коля", weight: "120", чтобы получить: Коля, вес 120 кг, то зачем вообще делать запрос, если ответ кроется в самом запросе?
Если нас интересует информация о Коле, и мы ее не знаем, то значит запрос должен иметь вид, типа:
user=коля&weight&phone&..... и т.д...
И что-то не видно, чтобы ваш серверный обработчик проверял параметры запроса, дабы выдать запрашиваемое, он у вас "выплевывает" все скопом.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования