|
|
|
| В передающием файле имеется такой код:
<?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? | |
|
|
|
|
|
|
|
для: Владимир55
(13.11.2009 в 15:01)
| | data - это имя переменной, которой будет присвоен ответ сервера, и это имя действительно только на клиенте, и только в рамках текущего сценария, и кокретно текущей функции. К переменной $data на сервере оно никакого отношения не имеет. Если вы хотите запросить на сервере данные по таковой (существующей для сервера) переменной, вы должны указать ее имя в запросе, например:
{'data' : 5}
и сервер получит переменную GET['data'] или POST['data'] (в зависимости от типа запроса) со значением 5. | |
|
|
|
|
|
|
|
для: sim5
(13.11.2009 в 15:17)
| | "К переменной $data на сервере оно никакого отношения не имеет."
Спасибо! Я этого не понимал, и потому строил в корне неверные планы!
"Если вы хотите запросить на сервере данные по таковой (существующей для сервера) переменной, вы должны указать ее имя в запросе, например: {'data' : 5}"
Вот в моем примере можно ли запросить ПО ОТДЕЛЬНОСТИ параметры переменной data и параметры переменной $var ?
И чтобы на мониторе они появились раздельно. Лучше всего даже запросить их двумя скриптами. Это возможно? | |
|
|
|
|
|
|
|
для: Владимир55
(13.11.2009 в 15:31)
| | Вот вам пример, на будущее, который может заставить вас думать о проблеме. Допустим ваш php обработчик запроса выглядит так:
<?
//здесь код, который при отсутсвии условия
//ничего не возвращает клиенту
?>
|
Именно такой, в конце закрывающего РНР-тега код первода строки. Вы можете ожидать, что в этом случае при запросе сервера, он вам ничего не вернет, однако это не так:
и success будет ОК, и data будет содеражать значение - код перевода строки и возврата каретки.
Не так нужно делать ротацию сообщений с сервера. Этот пост это продолжение вашего первого поста на эту тему, поэтому - не стоит делать конфигурацию параметров на клиенте (передавать их ему), все это нужно задавать на сервере, и управлять ими сервером, а клиенту возвращать только данные. Передавать некий скрипт управляющий сменой этих сообщений нет необходимости. | |
|
|
|
|
|
|
|
для: sim5
(13.11.2009 в 15:42)
| | К сожалению, на форуме сейчас не работает система личных сообщений. Если можно, то назовите Вашу почту. Или киньте пустое письмецо мне по адресу antiplagiat@bk.ru | |
|
|
|
|
|
|
|
для: Владимир55
(13.11.2009 в 15:53)
| | Некогда мне почтой общаться, своей работы много, и не охота отвлекаться на почту. | |
|
|
|
|
|
|
|
для: sim5
(13.11.2009 в 16:18)
| | Тогда я вынужден попросить Вас не писать в создаваемых мною темах.
Я вижу, что Вы знающий человек и тратите много времени на ответы, но Ваши посты для меня совершенно бесполезны. Вы пишете в пустоту, потому что я не способен использовать Ваши рекомендации. И в то же время забиваете мои темы, исключая возможность получения конкретных ответов от других людей.
Поймите, что мне нужны коды, а не лирика. Мне нужны устойчиво работающие коды, грамотно созданные грамотными людьми. А Ваши абстракции мне реально мешают делать дело, ибо сдерживают процесс получения необходимых сведений.
Пожалуйста, без обид! | |
|
|
|
|
|
|
|
для: Владимир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 (вам понадобится подключить спец. библиотеки или писать свою реализацию). | |
|
|
|
|
|
|
|
для: The Electronic Cat
(17.11.2009 в 14:33)
| | Гениально!
Большое спасибо! | |
|
|
|