X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Помогите составить функцию
happyhand
happyhand
Topic Starter сообщение 11.7.2010, 11:31; Ответить: happyhand
Сообщение #1


Имеется форма отправки (упрощённо):
[php]
<div id="output"></div>
<form id="myForm" action="form.php" method="post">
<table>
<tr>
<td><input type="radio" name="vote" value="-5"></td>
</tr>
<tr>
<td align='center'>+5</td>
</tr>
</table>
<input id="submit" type="submit" name="submit" value="Submit" />
</form>
[/php]При помощи ajax-запроса она отправляется на сервер и возвращается ответ (писал не я, нашёл в инете).

$(document).ready(function(){
  var options = {
   target: "#output",
    beforeSubmit: showRequest,  
    success: showResponse,
    timeout: 3000
  };
  $('#myForm').submit(function() {
    $(this).ajaxSubmit(options);
    return false;
  });
});
function showRequest(formData, jqForm, options) {
    var queryString = $.param(formData);
    return true;
}
function showResponse(responseText, statusText)  {
}

В принципе, всё работает.
Помогите сделать следующее:
1. Нужно отправлять форму по onclick (не кнопкой);
2. Во время запроса вывести ajax-каритнку;
3. При ответе от сервера форму скрыть (чтоб больше не голосовали).
Ну вот, вроде, и всё. Да, ещё нужно сделать проверку по кукам на исключение повторного голосования, но это, думаю, сделаю сам (в рнр разбираюсь средне, а в js полный ноль), хотя буду признателен, если поможете и этим.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
happyhand
happyhand
Topic Starter сообщение 13.7.2010, 17:46; Ответить: happyhand
Сообщение #2


Всё, разобрался, только есть ещё загвоздка.
Нужно скрыть форму отправки по ответу с сервера.
Как сделать, ума не приложу. Пытался о обработчике у станавливать куку, а на форму повесить проверку:
if(isset($_COOKIE['user']))echo"форма";
Но ответ от обработчика не перезагружает страницу с формой (работает ajax) и поэтому там массив с куками пустой.
Вот когда страницу перезагружаешь, тогда форма исчезает, но надо, чтобы исчезала по ответу от сервера. Нужно как-то на Javascript это сделать, а я не знаю его. То есть в ответе присутствует какая-то переменная (функция), кот. скрывает блок с формой. Вот как-то так.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 13.7.2010, 18:16; Ответить: alexdrob
Сообщение #3


function showResponse(responseText, statusText) {
$('#myForm').hide();
}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
happyhand
happyhand
Topic Starter сообщение 13.7.2010, 18:36; Ответить: happyhand
Сообщение #4


Большое человеческое спасибо!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
happyhand
happyhand
Topic Starter сообщение 21.7.2010, 23:10; Ответить: happyhand
Сообщение #5


А как сделать, чтобы крутилась картинка, пока не пришёл ответ от сервера?
И ещё, как отправку сделать по клику на ссылке?
Пробую так:
[php]<a class='bbb' href=''>Ссылка</p>[/php]
В скрипте:
$(document).ready(function(){
  var options = {
   target: "#output",
    beforeSubmit: showRequest,  
    success: showResponse,
    timeout: 3000
  };
  $([B]'a.bbb').click[/B](function() {
    $(this).ajaxSubmit(options);
    return false;
  });
});
function showRequest(formData, jqForm, options) {
    var queryString = $.param(formData);
    return true;
}
function showResponse(responseText, statusText)  {
}

Но что-то не то, не так работает, не подскажете, как правильно?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 22.7.2010, 2:04; Ответить: alexdrob
Сообщение #6


(sergey-g @ 22.7.2010, 02:10) *
чтобы крутилась картинка

взять анимированую крутящуюся картинку)
function showRequest(formData, jqForm, options) {
    //ВОТ ТУТ ОТОБРАЗИТЬ КАРТИНКУ
    var queryString = $.param(formData);
    return true;
}
function showResponse(responseText, statusText)  {
    //ВОТ ТУТ СКРЫТЬ КАРТИНКУ
}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
happyhand
happyhand
Topic Starter сообщение 22.7.2010, 10:53; Ответить: happyhand
Сообщение #7


Ну скрыть картинку ещё как-то получилось:
[php]$('img.ppp').hide();[/php]
а как её отобразить, причём до отправки запроса она должна быть не видна.
Вот так она вставлена на странице отправки:
<img class='ppp' src='images/ajaxloader.gif'>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SOKOJI
SOKOJI
сообщение 22.7.2010, 15:00; Ответить: SOKOJI
Сообщение #8


Картинке
style="display: none"
укажи. Затем в нужный момент в js пропиши:
$('.ppp').show();


Можно также прописать
$('.ppp').show('[B]slow[/B]');

Вместо slow можно указать fast. Тогда картинка будет появляться с анимацией.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
happyhand
happyhand
Topic Starter сообщение 23.7.2010, 13:20; Ответить: happyhand
Сообщение #9


Подскажите ещё с таким моментом.
Запрос отправляется формой:
[PHP]
<form id='myForm' action='form.php' method='post'>
<input type='submit' value='Войти' />
</form>
[/PHP]
javascript:
$(document).ready(function(){
  var options = {
   target: "#output",
    beforeSubmit: showRequest,  
    success: showResponse,
    timeout: 3000
  };
  $('#myForm').submit(function() {
    $(this).ajaxSubmit(options);
    return false;
  });
});
function showRequest(formData, jqForm, options) {
$('.ppp').show();
    var queryString = $.param(formData);
    return true;
}
function showResponse(responseText, statusText)  {
$('img.ppp').hide();  
$('#myForm').hide();
}

Файл form.php:
[PHP]
<?php
header('Content-Type: text/html; charset=utf-8');
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {

echo "Hi!";
}
?>
[/PHP]
Но совсем некрасиво это делать кнопкой, нужно сделать ссылкой:
[php]<a href='form.php'>Вход</a>[/php]
Какие изменения нужно внести в код, чтобы вместо кнопки работала ссылка?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SOKOJI
SOKOJI
сообщение 23.7.2010, 13:36; Ответить: SOKOJI
Сообщение #10


$(document).ready(function(){
  var options = {
   target: "#output",
    beforeSubmit: showRequest,  
    success: showResponse,
    timeout: 3000
  };
  $('#link').click(function() {
    $(this).ajaxSubmit(options);
    return false;
  });
});
function showRequest(formData, jqForm, options) {
$('.ppp').show();
    var queryString = $.param(formData);
    return true;
}
function showResponse(responseText, statusText)  {
$('img.ppp').hide();  
$('#myForm').hide();
}
<a href="#" id="link">Вход</a>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как составить уравнение, чтобы назначить цену для товара?
2 rownong27 712 21.3.2024, 12:53
автор: Lumex
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 692 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) Помогите рещить проблему с монитором.
Почему низкое разрешение при подключении монитора через displayport?
0 Levels 1695 11.12.2020, 0:48
автор: Levels
Открытая тема (нет новых ответов) Помогите кто нибудь получить партнерку Росбанк!
7 heisenberg_mw 2315 7.8.2020, 9:28
автор: heisenberg_mw
Открытая тема (нет новых ответов) Помогите найти тему пожалуйста
7 virtas 12411 24.7.2020, 17:02
автор: -JamesSmips-


 



RSS Текстовая версия Сейчас: 29.3.2024, 15:00
Дизайн