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

HTML+CSS+JavaScript

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

 

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

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

тема: Ещё одна загадка AJAX
 
 автор: Владимир55   (13.11.2009 в 15:01)   письмо автору
 
 

В передающием файле имеется такой код:
<?php
    $data 
'<p><font color="#008000">RUSSIA РОССИЯ </font> <font color="#FF00FF"> Ajax</font></p>';
    echo 
$data iconv('cp1251''utf-8'$data);

    echo 
"ПРОВЕРКА";

    
$var '<p><font color="#008000">RUSSIA РОССИЯ Второе сообщение</font> <font color="#FF00FF"> Ajax</font></p>';
    echo 
$var iconv('cp1251''utf-8'$var);


А в принимающем написано вот что:
<?php
echo <<<TEXT
<div id="content"></div>
<script src="jquery.min.js"></script>
<script>
$.get('3.php', function(data){
  // в переменной data находится ответ от скрипта
  $('#content').html(data);
});
</script>
TEXT;


Как я полагал, воспроизведется только содержимое переменной data. Но воспроизводится все, что в передающем файле выводится через echo (естесственно, что ПРОВЕРКА не читается вследствие искажения кодов букв, но и это слово передается).

Как же это так? Зачем тогда вообще задана переменная data?

  Ответить  
 
 автор: sim5   (13.11.2009 в 15:17)   письмо автору
 
   для: Владимир55   (13.11.2009 в 15:01)
 

data - это имя переменной, которой будет присвоен ответ сервера, и это имя действительно только на клиенте, и только в рамках текущего сценария, и кокретно текущей функции. К переменной $data на сервере оно никакого отношения не имеет. Если вы хотите запросить на сервере данные по таковой (существующей для сервера) переменной, вы должны указать ее имя в запросе, например:
{'data' : 5}
и сервер получит переменную GET['data'] или POST['data'] (в зависимости от типа запроса) со значением 5.

  Ответить  
 
 автор: Владимир55   (13.11.2009 в 15:31)   письмо автору
 
   для: sim5   (13.11.2009 в 15:17)
 

"К переменной $data на сервере оно никакого отношения не имеет."
Спасибо! Я этого не понимал, и потому строил в корне неверные планы!

"Если вы хотите запросить на сервере данные по таковой (существующей для сервера) переменной, вы должны указать ее имя в запросе, например: {'data' : 5}"

Вот в моем примере можно ли запросить ПО ОТДЕЛЬНОСТИ параметры переменной data и параметры переменной $var ?

И чтобы на мониторе они появились раздельно. Лучше всего даже запросить их двумя скриптами. Это возможно?

  Ответить  
 
 автор: sim5   (13.11.2009 в 15:42)   письмо автору
 
   для: Владимир55   (13.11.2009 в 15:31)
 

Вот вам пример, на будущее, который может заставить вас думать о проблеме. Допустим ваш php обработчик запроса выглядит так:
<?
//здесь код, который при отсутсвии условия
//ничего не возвращает клиенту
?>


Именно такой, в конце закрывающего РНР-тега код первода строки. Вы можете ожидать, что в этом случае при запросе сервера, он вам ничего не вернет, однако это не так:
и success будет ОК, и data будет содеражать значение - код перевода строки и возврата каретки.

Не так нужно делать ротацию сообщений с сервера. Этот пост это продолжение вашего первого поста на эту тему, поэтому - не стоит делать конфигурацию параметров на клиенте (передавать их ему), все это нужно задавать на сервере, и управлять ими сервером, а клиенту возвращать только данные. Передавать некий скрипт управляющий сменой этих сообщений нет необходимости.

  Ответить  
 
 автор: Владимир55   (13.11.2009 в 15:53)   письмо автору
 
   для: sim5   (13.11.2009 в 15:42)
 

К сожалению, на форуме сейчас не работает система личных сообщений. Если можно, то назовите Вашу почту. Или киньте пустое письмецо мне по адресу antiplagiat@bk.ru

  Ответить  
 
 автор: sim5   (13.11.2009 в 16:18)   письмо автору
 
   для: Владимир55   (13.11.2009 в 15:53)
 

Некогда мне почтой общаться, своей работы много, и не охота отвлекаться на почту.

  Ответить  
 
 автор: Владимир55   (13.11.2009 в 16:34)   письмо автору
 
   для: sim5   (13.11.2009 в 16:18)
 

Тогда я вынужден попросить Вас не писать в создаваемых мною темах.

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

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

Пожалуйста, без обид!

  Ответить  
 
 автор: The Electronic Cat   (17.11.2009 в 14:33)   письмо автору
 
   для: Владимир55   (13.11.2009 в 15:31)
 

Сработает, например, так:

<?php 
echo <<<TEXT 
<div id="content"></div
<
script src="jquery.min.js"></script> 
<script> 
$.get('3.php', function(r){ 
  // в переменной r находится ответ от скрипта 
  var tmp = r.split("::-::");
  /*разделитель можете задать любой - главное, чтоб он 
     а) не встретился случайно в строке
     б) был одинаковым на сервере и клиенте */
  var data = tmp[0];
  var $var = tmp[1]; //знак $ нужен потому, что в JS var - это зарезервированное слово
  $('#content').html(data); 
}); 
</script> 
TEXT;


<?php 
    $data 
'<p><font color="#008000">RUSSIA РОССИЯ </font> <font color="#FF00FF"> Ajax</font></p>'
    echo 
$data iconv('cp1251''utf-8'$data); 

    echo 
"::-::"//разделитель, по которому будем разбивать ответ на клиенте

    
$var '<p><font color="#008000">RUSSIA РОССИЯ Второе сообщение</font> <font color="#FF00FF"> Ajax</font></p>'
    echo 
$var iconv('cp1251''utf-8'$var);


Если же хотите передавать сложные структуры данных с сохранением имен переменных и т.п.,
то можно использовать протокол JSON (вам понадобится подключить спец. библиотеки или писать свою реализацию).

  Ответить  
 
 автор: Владимир55   (17.11.2009 в 21:01)   письмо автору
 
   для: The Electronic Cat   (17.11.2009 в 14:33)
 

Гениально!

Большое спасибо!

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

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