Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   JQuery передача параметров в callback (https://javascript.ru/forum/jquery/2998-jquery-peredacha-parametrov-v-callback.html)

Cepin 07.03.2009 15:01

JQuery передача параметров в callback
 
Здравствуйте. Образовалась такая проблема.

Общий смысл скрипта состоит в том, что есть таблица, с 2 колонками, слева определенный текст, справа пусто.
При нажатии на кнопку, через ajax из php выдергиваются числа и ставятся в правую колонку напротив !своего! текста.

Начал делать так, циклом обхожу таблицу, вытаскиваю текст, делаю запрос ajax

$.ajax(
{
     type:   'POST',
     url:    './ajax.php',
     data:   'text='+text,
      success: function(msg) { alert('true'); },
      error:   function() { alert('false'); },
});


Этот код полностью рабочий, но я не могу в созданной функции на событие success указать какой указатель куда потом писать ответ, на какой текст..



пробывал делать так
$.ajax(
{
     type:   'POST',
     url:    './ajax.php',
     data:   'text='+text,
      success: ok(text),
      error:      no(text),
});

function ok(text) {
вставка ответа под текст или ID 
}

function no(text) {
вставка сообщения об ошибке под текст или ID 
}



но так начинаются непонятные глюки и срабатывает сразу и error и success

использовать синхронные запросы - не вариант.


Подскажите, как решить эту проблему или может есть какой-нить другой способ, организации данной задачи?

Gvozd 07.03.2009 15:11

obj=$("#id");//точно не уверен, что это записывается так.но смысл думаю понятен
$.ajax(
{
     type:   'POST',
     url:    './ajax.php',
     data:   'text='+text,
      success: (function(){return function(msg) { alert('true');/*тут ссылка на ваш объект*/$(obj)/**/ }})(),
      error:   function() { alert('false'); },
});

попробуйте этот код.
после почитайте статью

Cepin 07.03.2009 16:04

$.ajax(
     {
     type:   'POST',
     url:    './ajax.php',
     data:   'module=domain_reg&action=check&id='+id,
     success: function(msg) { set_id(id, msg);},
     error:   function() { },
     });


set_id(id, msg)

принимает ID куда надо вставить ответ и сам ответ.

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

но если честно, я не понял, как применить решение из статьи, для своего случая.

Gvozd 07.03.2009 16:36

тема сложновата для некоторых в первый раз.
лично я этот и пару сопутствующих разделов читал раза три четыре непрерывно, пока не осознал.
в общем медитации, и еще раз мекдитации)))
код же в вашему случае будет выглядеть так
$.ajax(
     {
     type:   'POST',
     url:    './ajax.php',
     data:   'module=domain_reg&action=check&id='+id,
     success: (function(id_){return function(msg) { set_id(id_, msg);} })(id),
     error:   function() { },
     });


прочитайте более внимательно эту часть статьи, для понимания происхдящих процессов.
кроме того советую перечитать весь цикл статей, с целью общего ознакомления.
я открыл для себя много нового после их прочтений, хотя "писал" на JS и до этого

Cepin 08.03.2009 15:56

спасибо большое, помогло.

Gvozd 08.03.2009 16:16

пожалуйста.

Я робот 08.05.2009 16:19

ПробЫй:dance:

Робот Вертер 08.05.2009 16:22

Игого и агага
 
Цитата:

Сообщение от Cepin (Сообщение 13821)
Здравствуйте. Образовалась такая проблема.

Общий смысл скрипта состоит в том, что есть таблица, с 2 колонками, слева определенный текст, справа пусто.
При нажатии на кнопку, через ajax из php выдергиваются числа и ставятся в правую колонку напротив !своего! текста.

Начал делать так, циклом обхожу таблицу, вытаскиваю текст, делаю запрос ajax

$.ajax(
{
     type:   'POST',
     url:    './ajax.php',
     data:   'text='+text,
      success: function(msg) { alert('true'); },
      error:   function() { alert('false'); },
});


Этот код полностью рабочий, но я не могу в созданной функции на событие success указать какой указатель куда потом писать ответ, на какой текст..



пробывал делать так
$.ajax(
{
     type:   'POST',
     url:    './ajax.php',
     data:   'text='+text,
      success: ok(text),
      error:      no(text),
});

function ok(text) {
вставка ответа под текст или ID 
}

function no(text) {
вставка сообщения об ошибке под текст или ID 
}



но так начинаются непонятные глюки и срабатывает сразу и error и success

использовать синхронные запросы - не вариант.


Подскажите, как решить эту проблему или может есть какой-нить другой способ, организации данной задачи?

ПробЫй :haha:

Gvozd 08.05.2009 21:19

А-а-а-а-а.
Потс хохвачен!
мы все умрем!!!!!


Часовой пояс GMT +3, время: 06:02.