AJAX és Drupal

magor képe

Sziasztok!
Egyik fórumban voltak kérdésem a Drupal AJAX-al kapcsolatban.
Adott PP linkje:
http://palocz.hu/irasok/2007/dinamikus_select

Mivel ez nem működik Drupal 6 alatt szeretnék segítséget kérni! Valakinek van egyszerű Drupal AJAX-os kódja, amin tanulni lehetne. Vagy az itt levő kódot tudná úgy változtatni, hogy működjön 6-os alatt?
Köszönöm szépen a hozzászólásokat előre is .

Drupal verzió: 
tolmi képe

Amikor változtat a juzer a választáson, akkor kérd újra az egész formot AJAX-szal, szedd ki a renderelt formból azokat a részeket, amik változtak, küldd vissza a kliensnek és kész is.

A lényeg hogyha az éppen aktuális formot mindíg újragenerálod az AJAX hívásra, akkor nem fog szólni a Drupal hogy illegális elemek vannak az elküldött formban.

0
0

--
Tolmács Márk
Drupal bandita

magor képe

Köszi a hozzászólást, de egy kicsit részletesebb választ szeretnék. Most kezdtem foglalkozni az AJAX-al. Olyan dolgot szeretnék, ami működik Drupal 6 alatt és lehet rajta tanulni. Kérlek, ha van ilyen kódod, akkor küld el, ha nem nagy kérés. Tehát egy lapon van 1-2 legördülő lista és ezelből lehet válaszani, tartalmuk medig JSON-on keresztül cserélődik ki. Erre volnék kiváncsi. PP álltal közzétett kód nagyon érdekes és értékes, de sajnos, nem vagyok még olyan magas szinten, hogy életet leheljek belé Drupal 6-os alatt !

0
0
Pasqualle képe

http://drupal.hu/node/6008

ami a lenyeg a peldaban
1. ahah utvonal keszitese (ahahdemo/js)
2. egy mezo a formon #ahah parameterrel (figyeld, hogy a form ujraepitesnel, a formnak csak ezt a reszet (mezojet) rendereli ujra)

  $new_form = $form['dropdown1'];
...
  $output = theme('status_messages') . drupal_render($new_form);

3. wrapper. ez egy html element amit id alapjan azonosit, erre ervenyesul az ajax hivas (ezt fogja a peldaban lecserelni valami masra)

a tobbi dolog mar csak formalitas..

Osszetettebb pelda:
Quick Tabs modul 2-es verziojaban az admin.inc fajlt nezd meg. A view display listaja, az uj tab letrehozas es a tab torles mind ahah hivassal tortenik.

0
0
gyuxton képe

Köszönöm szépen, az müködik is és nagyon jó. De a villogát zavaró lehet. Ezért jobban tetszene az első PP megoldása. Belejavítottam a kódba:
Főleg a formproba_menu() függvény érdelene, hogy jó-e, mert ebbe javítottam bele. Nem éri el nekem sem a javascript function formproba_feldolg függvényt, pedig megpróbáltam a fórumban említett megoldást is.
Csereli az adatokat, csak a modul frissítésnél kiírja a következő üzenetet:
"
warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\xampp\drupal-6.9\sites\all\modules\formproba\formproba.module:23) in C:\xampp\htdocs\xampp\drupal-6.9\includes\common.inc on line 141.
"
Valamint a formon:
"Nem érvényes választást talált a rendszer. Javasolt a webhely gazdájával felvenni a kapcsolatot."
Tudna valaki segíteni? Köszönöm szépen

function formproba_menu() {
    $items['formproba'] = array(
      'path' => 'formproba',
      'page callback' => 'formproba_page', 
      'title' => 'Form próba',
      'access arguments' => array('access content'),
      'page arguments'   => array('formproba_form'),  
      );
 
    $items['formproba/data'] = array(
      'path' => 'formproba/data',
      'page callback' => 'formproba_data',
      'access arguments' => array('access content'),
      'type' => MENU_CALLBACK);
  return $items;
 
} 

function formproba_page(){
 
  drupal_add_js(drupal_get_path('module','formproba').'/formproba.js');
  return drupal_get_form('formproba_form');
 
}

function formproba_form(){
 
  $form['select1'] = array(
    '#type' => 'select',
    '#title' => 'Első választás',
    '#default_value' => 1,
    '#options' => array(1 => 'gyümölcs',2 => 'növény',3 => 'állat',),
  );
 
  $form['select2'] = array(
    '#type' => 'select',
    '#title' => 'Második választás',
    '#options' => isset($_POST['select1'])?formproba_get_select2($_POST['select1']):formproba_get_select2(1),
  );
 
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Elküld',
  );
 
  return $form;
}

function formproba_form_submit($form_id, $form_values){
  drupal_set_message('<pre>'.print_r($form_values,true).'</pre>');
}

function formproba_data(){
  echo drupal_to_js(formproba_get_select2(arg(2)));
}

function formproba_get_select2($id){
  switch($id){
  case 1: return array('1'=>'alma','2'=>'körte','3'=>'barack');
  case 2: return array('4'=>'fa','5'=>'bokor','6'=>'virág');
  case 3: return array('7'=>'nyuszi','8'=>'róka','9'=>'malac');
  default: return false;
  }
}
0
0
gyuxton képe

Működik:
javasript javítása:
$.getJSON("https://127.0.0.1/xampp/drupal-6.9/?q=formproba/data/" + $(this).val(), formproba_feldolg);

0
0