Вот смысл задачи: у меня php-скрипт должен принять post-запрос от js, обработать его функцией и возвратить обработанные данные. Как передать запрос я разобрался, а вот с возвратом - нет...
jQuery.post('?page=edit', {q: 'convert', html: jQuery('div#topic-message').html()})
if (isset($_POST['html']))
$bb = BBTags::HTML2BB($_POST['html']);
Так вот, как мне получить эту самую $bb в js-скрипте?
Спустя 2 часа, 40 минут, 57 секунд (13.09.2010 - 08:02) Michael написал(а):
$.post(
'/ajaxtest.php',
{
type: "test-request",
param1: "param1",
param2: 2
},
onAjaxSuccess
);
function onAjaxSuccess(data)
{
// Здесь мы получаем данные, отправленные сервером
alert(data);
}
В php просто то что нужно, выводишь - echo $bb; Эти данные станут значением переменной data, в функции обработки ответа.
Очень удобно на php например обернуть свои данные в некий тег. Типа:
echo '<div>' . $bb . '</div>';
получим этот текст в data. А это как раз верная запись для создания jQuery объектов.
$d = $(data); // - будет твой div
- и так также если много данных.
Вообще советую почитать это
Спустя 56 минут, 37 секунд (13.09.2010 - 08:58) linker написал(а):
Так может сначала нужно разобраться с самим JS, а уж потом переходить на его фреймворки?
Спустя 1 час, 3 минуты, 11 секунд (13.09.2010 - 10:01) Slays написал(а):
да не обязательно, я тоже jquery освоил раньше языка 
Пользуюсь другой конструкцией,

Пользуюсь другой конструкцией,
jQuery.ajax({
type: "POST",
url: "файл на сервере.php",
data: "param="+param+"¶m2="+param2+"¶m3="+param3,
success: function(answ){
здесь обрабатываем ответ от сервера, находится в переменной, указанной в параметре функции success, т.е. в answ
}
});
Спустя 6 часов, 52 минуты, 38 секунд (13.09.2010 - 16:54) Invis1ble написал(а):
Так а что, получается кроме вывода в поток нет других способов?
Спустя 26 минут, 5 секунд (13.09.2010 - 17:20) Invis1ble написал(а):
linker
не хочется париться с изучением аспектов кроссбраузерности. Я вообще php учу, а в сторону js меня попутно занесло. Как будет время, я js обязательно выучу...
не хочется париться с изучением аспектов кроссбраузерности. Я вообще php учу, а в сторону js меня попутно занесло. Как будет время, я js обязательно выучу...
Спустя 48 минут, 6 секунд (13.09.2010 - 18:08) Slays написал(а):
только выводом в поток
Спустя 33 минуты, 38 секунд (13.09.2010 - 18:42) Invis1ble написал(а):
блин, так и не понял, как получить данные:
В алерте выдает null.. Что я не так делаю?
echo '<div id="test">' . ($_POST['test'] * 2) . '</div>';
function onAjaxSuccess(){alert jQuery('div#test').html()};
jQuery.post('script.php', {test: '10'}, onAjaxSuccess);
В алерте выдает null.. Что я не так делаю?
Спустя 23 минуты, 56 секунд (13.09.2010 - 19:06) Slays написал(а):
$.post(
'script.php',
{
type: "test-request",
test: 10,
},
onAjaxSuccess
);
function onAjaxSuccess(data)
{
$('div#test').html(data);
}
Спустя 42 минуты, 38 секунд (13.09.2010 - 19:48) Invis1ble написал(а):
Че-то все равно ниче не получается.. Дело в том что у меня php-скрипт выдает в поток помимо дива еще разметку... Почему function onAjaxSuccess(){alert (jQuery('div#test').html())}; не катит?
Спустя 16 минут, 36 секунд (13.09.2010 - 20:05) Slays написал(а):
Такое не катит, потому что ты тут нигде не используешь возвращенный от сервера ответ, а просто хочешь вывести содержимое diva с id=test, который уже должен быть на странице. Ответ же возвращается в виде аргумента функции onAjaxSuccess, в частности onAjaxSuccess(data) содержит полученный ответ в переменной data, с который ты и должен работать.
Спустя 4 минуты, 36 секунд (13.09.2010 - 20:10) Invis1ble написал(а):
Slays
Цитата |
$('div#test').html(data); |
насколько я понимаю, данная конструкция добавляет код html, находящийся в data, в тег <div id="test"> ...
Цитата |
Такое не катит, потому что ты тут нигде не используешь возвращенный от сервера ответ, а просто хочешь вывести содержимое diva с id=test, который уже должен быть на странице. Ответ же возвращается в виде аргумента функции onAjaxSuccess, в частности onAjaxSuccess(data) содержит полученный ответ в переменной data, с который ты и должен работать. |
напиши плиз, как правильно с учетом этого утверждения
Спустя 5 минут, 33 секунды (13.09.2010 - 20:15) Slays написал(а):
если тебе алерт ответа надо, то так, как Michael и написал
не пользуюсь такой конструкцией, но думаю суть от этого не меняется =)
$.post(
'script.php',
{
type: "test-request",
test: 10,
},
onAjaxSuccess
);
function onAjaxSuccess(data)
{
alert(data);
}
не пользуюсь такой конструкцией, но думаю суть от этого не меняется =)
Спустя 5 минут, 11 секунд (13.09.2010 - 20:20) Invis1ble написал(а):
Slays
так как Michael написал выдается весь html, генерируемый php-скриптом, а мне надо только содержимое <div id="test">
так как Michael написал выдается весь html, генерируемый php-скриптом, а мне надо только содержимое <div id="test">
Спустя 31 минута, 18 секунд (13.09.2010 - 20:52) Slays написал(а):
дак блин )) серверный файл, к которому ты обращаешься не должен иметь никаких лишних html-конструкций, файл php
и все, если тебя надо только содержимое дива, то и смысла нет на сервер что-то помещать, ибо параметр который ты хочешь отправить, можно в той же функции на 2 умножить =)
Ajax применяется чтобы из базы что-то достать, иначе к серверу прибегать и не надо, например передал на сервер число id, нашел в базе соответствующий товар, вывел его в поток, забрал в ajax и вывел на экран.
Если тебе надо с серверного файла какой-то кусок определенный, то используется load, только с ним ты передать параметр на сервер не сможешь.
<?php
echo '<div id="test">' . ($_POST['test'] * 2) . '</div>';
?>
и все, если тебя надо только содержимое дива, то и смысла нет на сервер что-то помещать, ибо параметр который ты хочешь отправить, можно в той же функции на 2 умножить =)
Ajax применяется чтобы из базы что-то достать, иначе к серверу прибегать и не надо, например передал на сервер число id, нашел в базе соответствующий товар, вывел его в поток, забрал в ajax и вывел на экран.
Если тебе надо с серверного файла какой-то кусок определенный, то используется load, только с ним ты передать параметр на сервер не сможешь.
Спустя 9 минут, 10 секунд (13.09.2010 - 21:01) Invis1ble написал(а):
Slays
это я для примера, на самом деле то что мне надо я написал в первом посте
echo '<div id="test">' . ($_POST['test'] * 2) . '</div>';
это я для примера, на самом деле то что мне надо я написал в первом посте
if (isset($_POST['html']))
$bb = BBTags::HTML2BB($_POST['html']);
Спустя 7 минут, 22 секунды (13.09.2010 - 21:08) Basili4 написал(а):
Цитата (Invis1ble @ 13.09.2010 - 18:20) |
не хочется париться с изучением аспектов кроссбраузерности. Я вообще php учу, а в сторону js меня попутно занесло. |
JQuery весит 19 кб очень плохо если для того чтобы показать 1 окошко ты будешь таскать JQuery кстати пояле того как я разобрался с основами JS JQuery у меня прошло на раз два мне потребовался только список методов с кратким описанием. а если что не понято было про то как это использовать я просто лез в код, благо JQuery есть вариант не сжатый и с другими библиотеками тоже все проще
Спустя 12 минут, 25 секунд (13.09.2010 - 21:21) Invis1ble написал(а):
Basili4
естественно jQuery таскается не ради одной операции... Кроме того, мне важно понять сам принцип...
С учетом вышеизложенного "обновляю" первый пост и вопрос )) :
Вот смысл задачи: у меня php-скрипт должен принять post-запрос от js, обработать его функцией и возвратить обработанные данные. Как передать запрос я разобрался, а вот с возвратом - нет...
JS:
php:
Что мне надо написать в js-функции, чтоб js-переменная bb приняла значение php-переменной $bb ?? С учетом того, что php-скрипт генерирует, помимо <div id="receiver">, еще разметку...
естественно jQuery таскается не ради одной операции... Кроме того, мне важно понять сам принцип...
С учетом вышеизложенного "обновляю" первый пост и вопрос )) :
Вот смысл задачи: у меня php-скрипт должен принять post-запрос от js, обработать его функцией и возвратить обработанные данные. Как передать запрос я разобрался, а вот с возвратом - нет...
JS:
function onAjaxSuccess(data)
{
bb = ...?
}
jQuery.post('?page=edit', {q: 'convert', html: jQuery('div#topic-message').html()}, onAjaxSuccess);
php:
if (isset($_POST['html']))
$bb = BBTags::HTML2BB($_POST['html']);
echo '<div id="receiver">' . $bb . '</div>';
Что мне надо написать в js-функции, чтоб js-переменная bb приняла значение php-переменной $bb ?? С учетом того, что php-скрипт генерирует, помимо <div id="receiver">, еще разметку...
Спустя 52 минуты, 27 секунд (13.09.2010 - 22:13) Invis1ble написал(а):
наконец-то разобрался! И вся эта дискуссия была разведена всего лишь по-поводу одной строчки, которую к сожалению (и к удивлению) никто так и не написал:
function onAjaxSuccess(data)
bb = jQuery('<div id="receiver>' + data + '</div>').text();
Спустя 21 минута, 24 секунды (13.09.2010 - 22:34) Slays написал(а):
хех ) дак к возврату ответа это никакого отношения не имеет =) Вернулась то тебе в переменную data полная строка <div id="receiver">' . $bb . '</div> + в придачу и остальная html структура, если имелась, которые ты дополнительно загнал в div, а в последствии обработал, т.е. достал текст
в твоем случае bb = $('<div id="receiver><div id="receiver">' . $bb . '</div></div>').text(); из которого ты потом $bb достаешь.
тоже самое решается без этой лишней операции ))
в твоем случае bb = $('<div id="receiver><div id="receiver">' . $bb . '</div></div>').text(); из которого ты потом $bb достаешь.
тоже самое решается без этой лишней операции ))
if (isset($_POST['html']))
$bb = BBTags::HTML2BB($_POST['html']);
echo $bb;
function onAjaxSuccess(data)
bb = data;
Спустя 9 часов, 10 минут, 52 секунды (14.09.2010 - 07:45) Michael написал(а):
Цитата (Invis1ble @ 13.09.2010 - 21:13) |
наконец-то разобрался! И вся эта дискуссия была разведена всего лишь по-поводу одной строчки, которую к сожалению (и к удивлению) никто так и не написал:function onAjaxSuccess(data) |
Это явно что то странное. Если (как я советовал раньше) твой вывод обернут в какой то тег-родитель, то все твои действия по разбору будут:
function onAjaxSuccess(data)
var bb = jQuery(data).find('#receiver').text();
А на вход тебе может поступить например такое:
<div>
<ul>
<li>111
<li>222
</ul>
<div id="receiver">
dddddddddddddddddddd
</div>
<p>
hjdhfjsdhfjkshdjf
</p>
</div>
Спустя 15 часов, 30 минут, 50 секунд (14.09.2010 - 23:16) Invis1ble написал(а):
Michael
я уже переписал все так, что мне не требуется вообще выполнять такой post-запрос. Но в любом случае спасибо за совет, попозже попробую. Чесно говоря я тоже не совсем понимаю, как у меня это работало
я уже переписал все так, что мне не требуется вообще выполнять такой post-запрос. Но в любом случае спасибо за совет, попозже попробую. Чесно говоря я тоже не совсем понимаю, как у меня это работало
function onAjaxSuccess(data)
bb = jQuery('<div id="receiver">' + data + '</div>').text();
_____________
Профессиональная разработка на заказ
Я на GitHub | второй профиль