Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работает функция по кнопке (https://javascript.ru/forum/jquery/33641-ne-rabotaet-funkciya-po-knopke.html)

vadim5june 30.11.2012 22:33

Цитата:

Сообщение от Dimaz
alert как раз таки срабатывает, но цикл не работает, ничего не выводится, что создает цикл.

ну ничего и ненаписано чтоб выводилось
попробуйте
function go(data, row) {
alert("Ok!");
for (var i in data) {
row += '<b>' + data[i].questions + '</b><Br>';
var ss = data[i].answers.split(',');
for (var i2 = 0; i2<ss.length; i2++) {
row += '<input type="radio" name="id_answer'+i+'" value="' + i2 + '">' + ss[i2] + '<Br>';
}
}
return row;
}

$(document).ready(function(){
$('form input:image').click(function() {
var drink = $('input[name=drink]:checked').val();
$.post('save_data.php', {drink: drink},
function(data){
if(data) {
var fieldsCount = data.length;
var row = '';
if(fieldsCount) {
row = '<form>';
row=go(data, row);
row += '<button onclick="go(data); return false;">Далее</button></form>';
$('#feeds').html(row);
}
}
  }, "json"); 
return false;
});
});

Dimaz 30.11.2012 22:43

Вот вот, недавно пришла такая же мысль, сделал return row, но не сработало. Прочитал ваше сообщение, теперь работает. Я так написал:
go(data, row);
, вместо:
row=go(data, row);

Спасибо!:) Весь день с этим мучился.)

vadim5june 30.11.2012 22:47

Цитата:

Сообщение от Dimaz
Спасибо! Весь день с этим мучился.)

Это еще не все от кнопки чтобы работало я гдето выше писал
http://javascript.ru/forum/jquery/33...tml#post218837
надо переделать

Dimaz 30.11.2012 22:53

Цитата:

Сообщение от vadim5june (Сообщение 218851)
Это еще не все от кнопки чтобы работало я гдето выше писал
http://javascript.ru/forum/jquery/33...tml#post218837
надо переделать

Да и это тоже еще не все.) Я останавливаю цикл оператором break, так как мне надо, чтобы он сделал только один круг(хотя он должен сделать 2). Потом когда нажимаю кнопку 'Далее', он должен выполнить второй круг, но для этого надо как-то передать в цикл i++, а то он тоже самое выведет.:-?

Dimaz 30.11.2012 23:05

Я всего лишь
row += '<button onclick="go(this.data); return false;">Далее</button></form>';
добавил и он заработал по кнопке.))

vadim5june 30.11.2012 23:06

Цитата:

Сообщение от Dimaz (Сообщение 218853)
Да и это тоже еще не все.) Я останавливаю цикл оператором break, так как мне надо, чтобы он сделал только один круг(хотя он должен сделать 2). Потом когда нажимаю кнопку 'Далее', он должен выполнить второй круг, но для этого надо как-то передать в цикл i++, а то он тоже самое выведет.:-?

все это не представляет больших проблем по моему мнению-подумайте введите еще переменную внутри функции go-цикл сделайте вручную а не по for
я спать ложусь-если не получится завтра сделаем

Dimaz 01.12.2012 15:32

Всем доброго дня.:) Доработал я немножко свой скрипт. Подумал, поразмышлял и пришел к выводу, что функция в методе $.post будет только принимать данные с сервера и проверять их. А вот обрабатывать их и выводить результат будет функция go. Просто на мой взгляд нет логики в таком бадминтоне. Зачем по десять раз перебрасываться параметрами? Вот модифицированный код:
function go(data) {
alert("Ok!");
var row = '';
row = '<form>';
for (var i in data) {
row += '<b>' + data[i].questions + '</b><Br>';
var ss = data[i].answers.split(',');
for (var i2 = 0; i2<ss.length; i2++) {
row += '<input type="radio" name="id_answer'+i+'" value="' + i2 + '">' + ss[i2] + '<Br>';
}
break;
}
row += '<button onclick="go(data); return false;">Далее</button></form>';
$('#feeds').html(row);
}

$(document).ready(function(){
$('form input:image').click(function() {
var drink = $('input[name=drink]:checked').val();
$.post('save_data.php', {drink: drink},
function(data){
if(data) {
var fieldsCount = data.length;
if(fieldsCount) {
go(data);
}
}
  }, "json"); 
return false;
});
});

Осталось разобраться с вызовом этой функции по кнопке.

Dimaz 01.12.2012 16:20

Вот куда сохранить данные с сервера, чтобы с ними потом можно было работать дальше?:-?

vadim5june 01.12.2012 16:35

Цитата:

Сообщение от Dimaz (Сообщение 218969)
Вот куда сохранить данные с сервера, чтобы с ними потом можно было работать дальше?:-?

для начала заведите глобальную переменную для отладки
var Data;
в обработчике напишите
function(data){Data=data;

и используйте эту Data где нужно
--------------------
потом из глобальных надо будет убрать-спрятать внутри гдето

Dimaz 01.12.2012 17:11

Так имеете в виду:
row += '<button onclick="function(data){Data=data;go(data); return false;}">Далее</button></form>';

А глобальную переменную куда нужно вписать?


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