Коллеги, нужна ваша помощь. Уже запутался в куче различных вариантов предлагаемых в интернете. К тому же не один не сработал.
Есть модуль. В нем я подключаю свой JS файл (здесь проблем нет, файл подключается, работает), который должен парсить таблицу на странице и отдавать значения обратно в модуль и там дальше с этими данными творю че хочу. Так вот отдать данные то как раз и не получается. Подскажите кто как может...
делаю так:
Код модуля (только ключевые моменты):
<?php
function prof_menu() {
$items = array();
$items['prof/prof_nodeviewform_save'] = array(
'page callback' => 'prof_nodeviewform_save',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
...
function
prof_nodeviewform_save ($form, &$form_state) {
...
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', $_GET['gotov']) // собственно так я не получаю нужные мне данные
...
}
?>
Код JS (К примеру хочу передать число 15 в модуль):
var gotov = 15;
$.ajax({
type: "GET",
url: 'prof/prof_nodeviewform_save',
data: gotov,
});
...
Комментарии
Подписываюсь!
Могу предположить, что 'access arguments' => array('access content') не пропускает JS, попробуйте поставить TRUE, а в prof_nodeviewform_save проверять кто пишет.
спасибо что отозвались.
а как в prof_nodeviewform_save проверять кто пишет?
я вообще все делал на основе http://drupal.org/node/305747
и какого то еще буржуйского мануала
а если так попробовать в жаваскрипте(на подобии делал, щас точно не скажу): $get('prof/prof_nodeviewform_save',{gotov: "15"}, null);
если это код у вас рабочий, то подозрительно по мне : data: gotov, а $_GET['gotov'], мож $_GET['data']
Так с TRUE я угадал?
http://xandeadx.ru/blog/drupal/46 тут немного другой случай, но если подумать, думаю получится прикрутить в ваш код.
согласен, должно быть data: {gotov:gotov}
но по прежнему то что нужно не работает
а ХЗ
Кстати, можно даже проще делать, передавать сначала id пользователя в JS через Drupal.settings, а потом тем же $.ajax в prof_nodeviewform_save.
вообще заголовок правльно уходит? в жуке проверяли? У вас какой адрес? Просто если а локальном тестите и локалхост прописан в начале могут быть проблемы. Введите $get('prof/prof_nodeviewform_save',{gotov: "15"}, null); с полным адресом с http и прочей ерундой
так поставив тру мы же полностью разрешаем передачу аргументов
Да! Но это не страшно, если потом будем проверять кто пишет.
Вроде так это делается программно:
<?php url('prof/prof_nodeviewform_save', array('absolute' => TRUE)) ?>
Подписываюсь
Именно поэтому надо передавать не uid, а session_id(). Признаю - ошибался )
У меня работало вот так:
$(replace).load(url + query + ' ' + replace + ' > *', data, function(response, status, xhr){
if(status != 'error'){
afterLoadEvent(replace);
}
});
я по хлоду недопонимаю чегото:
$items['my_ajax'] = array
(
'title' => 'output',
'page callback' => 'my_ajax_get_form',
'access arguments' => array('myajax'),
'type' => MENU_CALLBACK,
);
это я в меню колбаке пишу
а вот это функция
function my_ajax_get_form()
{
return $_GET['aaa'];
}
а это в скрипте
$.get('http://my.sait/my_ajax', {aaa:"15"},null);
прям с рабочего кода взято(когда этого зверя учил)
я чет тоже не понимаю, может вы свежим глазом найдете ошибку
prof.module
<?php
// $Id$ function prof_perm() {
return array('access prof content', 'administer prof');
}
function
prof_menu() {$items = array();
$items['prof'] = array(
'page callback' => 'prof_nodeviewform_save',
'access arguments' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
function
prof_nodeapi(&$node, $op, $teaser, $page) { // -----------Цепляем кнопки к типу декларацияswitch ($op) {
case 'view':
if ($node->type == "deklaration") {
drupal_add_js(drupal_get_path('module','prof').'/prof.js');
$node->content['prof_items'] = array(
'#value' => drupal_get_form('prof_nodeviewform', $node),
'#weight' => 100,
);
}
break;
}
}
function
prof_nodeviewform($form_state, $node) { // -----------------ФОРМИРОВАНИЕ КНОПОК$form['save'] = array(
'#type' => 'submit',
'#value' => 'Сохранить',
'#attributes' => array(
'class' => 'save',
),
'#validate' => array('prof_nodeviewform_save'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Отправить',
'#attributes' => array(
'class' => 'send',
),
);
$form['nodenid'] = array( // -------------------Скрытое поле для передачи ид ноды
'#type' => 'hidden',
'#value' => $node->nid
);
return $form;
}
function
prof_nodeviewform_submit($form, &$form_state) { // -----Событие на отправить}
function
prof_nodeviewform_save ($form, &$form_state) { // ----------Событие на сохранить echo 'значение'.$_GET['gotov'];}
?>prof.js
$.get('http://localhost/prof.ru/prof',{gotov: "15"}, null);
}
хрен знает. http://lemon-computing.livejournal.com/1445.html - чисто учебный и рабочий пример, с адресами только смотрите аккуратнее создаёте модуль с именами и кодом как в примере. не заработает - мож jquery или ещё чего нет
а js ваще ципляется? алертить пробовали?
да, js цепляется и работает
а изза денвера же не может быть? уже и не знаю на что и грешить..
и сам jquery работает? из за денвера думаю врят ли. а если в фаербаге посмотреть парамеры правилно передаются?. Если не выйдет, пример простой какойнить кину попозже.
jquery тоже работает
а как в фаербаге просмотреть что именно передалось? просто отслеживать код и переменные умею, а чтобы такие функции дебажить я хз где смотреть
просто вкладка консоль. обновляеш страницу и там будет выполняться get передача - то есть по сути просто ссылка на функцию но с параметром, то есть что то типа http://localhost/prof.ru/prof?gotov=15
если брать гетом, то там так же можно посмотреть что возвращается
странное дело
$('#edit-save').click(function() {
alert('скрипт норм');
$.get('/prof.ru/prof', {gotov:"15"},null);
return false;
});
});
если ретерн фолс, то судя по фаербагу все отправляется, и возвращается то что нужно.
но ставлю ретерн тру - ошибка, ниче не отправляется, но мне надо чтобы по нажатию на кнопку после выполнения js скрипта продолжился выполняться пхп скрипт.
Может так попробовать.
alert('скрипт норм');
$.get('/prof.ru/prof', {gotov:"15"},null);
return false;
});
так вообще не реагирует
А вместо сохранения значения в $_GET['gotov'].. если добавить hidden-элемент на форму для хранения значения, заполнять его значение ява-скриптом а потом брать из form_state['values']['элемент']?
дело в том что значений может быть 10, а может быть 100
еще актуально...
перечитал кучу документации..где то ловлю клина
либо перечитал уже...
HEEEELP!!
давайте мыло - модуль вышлю 100% рабочий и элементарный - выводит блок(сами регион укажите) с кнопкой. - после нажатия записывает данные в переменную
2phpandrei может лучше на файлообменник какой? и вам не так напряжно всем желающим отправлять и народ свободно потянет
можно и так. да там было б чего хорошего - кнопка и запись в переменную. засмеют ). Попозже готово будет
А кто мешает его к комменту прикрепить?
попробуйте, коряво, но работает
все, спасибо огромное, работает
Кажется я счастлив