Необходимо сделать зависимые списки типа Регион -> Город. Сделал их аяксом, но друпал не понимает данные, которые я подгрузил. Возможно использовать AHAH для списков, не создавая свой модуль?
AHAH можно реализовать и без модуля.
Ahah-запрос может обращаться к стороннему php-скрипту, главное, чтобы он возвращал правильный ответ.
Должен быть JSON вида {"data": "ваш контент"} и заголовок Content-Type: "text/javascript".
А может быть можно как-нибудь через аякс все-таки сделать?? он мне как-то роднее, а в ahah никак вкурить не могу... Выложу свой код, может кто че подскажет?
Файл reg_form.js:
В файлах regions.php и citys.php происходит запрос к БД и возвращаются регионы и города в формате json.
Все отлично подгружается, селекты заполняются, даже работает зависимость Регион -> Город, т.е. аякс прекрасно работает,НО Drupal не видит эти подгруженные данные. Когда я вызываю сабмит формы, то выскакивает сообщение An illegal choice has been detected. Please contact the site administrator.
представь ты пополняешь счет через форму, там есть селект 10, 20, 100. но ты через фаербаг сабмитишь 10000000.
тебе надо каждый сабмит класть новые значения в кеш формы и тд. курим
Комментарии
собственно кто тогда будет отдавать html если не модуль друпала?
в чем именно загвоздка?
AHAH можно реализовать и без модуля.
Ahah-запрос может обращаться к стороннему php-скрипту, главное, чтобы он возвращал правильный ответ.
Должен быть JSON вида {"data": "ваш контент"} и заголовок Content-Type: "text/javascript".
без модуля никак
тогда технически это уже не AHAH
А может быть можно как-нибудь через аякс все-таки сделать?? он мне как-то роднее, а в ahah никак вкурить не могу... Выложу свой код, может кто че подскажет?
Файл reg_form.js:
function()
{
$("#edit-profile-region").empty();
$("#edit-profile-city").empty();
$.ajax(
{
url:"/sites/all/themes/pshoptheme/scripts/regions.php",
type:"POST",
dataType:'json',
success:function(data)
{
var i = 0;
while(data[i])
{
$("#edit-profile-region").append('<option>'+data[i]+'</option>');
i++;
}
$.ajax(
{
url:"/sites/all/themes/pshoptheme/scripts/citys.php",
type:"POST",
dataType:'json',
data:
{
reg:$("#edit-profile-region").val()
},
success:function(data)
{
var i = 0;
while(data[i])
{
$("#edit-profile-city").append('<option>'+data[i]+'</option>');
i++;
}
}
});
}
});
$("#edit-profile-region").change(
function()
{
$.ajax(
{
url:"/sites/all/themes/pshoptheme/scripts/citys.php",
type:"POST",
dataType:'json',
data:
{
reg:$("#edit-profile-region").val()
},
success:function(data)
{
$("#edit-profile-city").empty();
var i = 0;
while(data[i])
{
$("#edit-profile-city").append('<option value="'+i+'">'+data[i]+'</option>');
i++;
}
}
});
});
});
В файлах regions.php и citys.php происходит запрос к БД и возвращаются регионы и города в формате json.
Все отлично подгружается, селекты заполняются, даже работает зависимость Регион -> Город, т.е. аякс прекрасно работает,НО Drupal не видит эти подгруженные данные. Когда я вызываю сабмит формы, то выскакивает сообщение An illegal choice has been detected. Please contact the site administrator.
представь ты пополняешь счет через форму, там есть селект 10, 20, 100. но ты через фаербаг сабмитишь 10000000.
тебе надо каждый сабмит класть новые значения в кеш формы и тд. курим
Все, создал свой модуль, разобрался с AHAH. Не так уж сложно оказалось) Всем спасибо за помощь!)
penexe, отдельное спасибо за статью, очень помогла!)