Пара вопросов по jQuery

M2
На сайте с 11.01.2011
Offline
341
641

Всем привет!

Можно парочку вопросов? :)

1. Отправляю данные POSTом. Всё ок, данные уходят, на серваке обрабатываются. Есть флаг успешности обработки данных, который ловлю обратно в js. И вот если флаг выставлен, я хочу перезагрузить страницу (location.reload()). Так вот при перезагрузке у меня откуда ни возьмись появляется окно о том, что ... действительно вы хотите обновить страницу? Откуда после отправки могли взяться POST-данные?

2. Пытаюсь перерисовать таблицу средствами jQuery. Код вот такой:


<table id="catDisplay" style="width: 500px;">
<tbody>
{if $ROWS < 1}
<tr>
<td colspan="3">Категорий в базе не обнаружено</td>
</tr>
{else}
<tr>
<td><b>№</b></td>
<td><b>Название</b></td>
<td><b>Описание</b></td>
</tr>

{section name="pcform" loop=$CATEGORIES}
<tr>
<td>{$CATEGORIES[pcform].cat_id}</td>
<td>{$CATEGORIES[pcform].cat_name}</td>
<td>{$CATEGORIES[pcform].cat_descr}</td>
</tr>
{/section}
{/if}
</tbody>
</table>

данные вставляются с помощью шаблонов, берутся опять же с сервера.

И есть функция:


function updateCategoriesDisplay()
{
$.ajax({
url: 'ajax.php?mode=update_display',
dataType: 'json',
success: function(data)
{
$('#catDisplay > tbody').append(data.html);
}
});
}

Ну, соответственно, код ))


case 'update_display':
$data = array();

$sql = 'SELECT * FROM categories ORDER BY id DESC LIMIT 1';
$db->query($sql);



$categories = array();
while ($dbdata = $db->parse())
{
$data['html'] = "<tr><td>".$dbdata['cat_id']."</td><td>".$dbdata['cat_name']."</td><td>".$dbdata['cat_descr']."</td></tr>";
}

die(json_encode($data));




break;

Итог: таблица перерисовывается только после явной перезагрузки страницы.

Опытные люди, чего я делаю не так?

Всем спасибо за то, что нашли время прочитать сей код :)

------------------- Крутые VPS и дедики. Качество по разумной цене ( http://cp.inferno.name/view.php?product=1212&gid=1 ) VPS25OFF - скидка 25% на первый платеж по ссылке выше
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1

Вы попробуйте без ДжейКвери через обычную форму отправить ПОСТом и нажать F5. Вам браузер скажет то же самое.

Юзайте window.location.pathname='/dir1/dir2/file.html';

Я обычно делаю так:


if (isset($_POST['submit']))
{
foreach($POST as $k=>$v)
{
$_SESSION['frompost'][$k] = $v;
}
header('Location: $currentPage');
}

Далее в тексте, где надо что-то вывести


if (isset($_SESSION['frompost']))
{
foreach($_SESSION['frompost'] as $k=>$v)
{
echo "key: $k; value: $v<br/>";
}
unset($_SESSION['frompost']));
}

Это код просто для примера, чтобы передать суть(был пост - пишем данные для вывода в сессионый массив, переадресовываем на страницу эту же самую, чекаем, есть ли ПОСТовой массив, есть - выводим).

Подпись))
V
На сайте с 09.02.2011
Offline
38
#2

reload() выдает alert если на текущую страницу вы зашли с помошью POST запроса. Если для вывода страницы можно использовать обычный get запрос тогда используйте

window.location=[Ссылка_на_текущую_страницу];

[Ссылка_на_текущую_страницу] - может быть и статичной вписаной в текст а можно ее получить методами JS.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий