1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Решение проблем

[Решено]Из JS в модуль!

Главные вкладки

Коллеги, нужна ваша помощь. Уже запутался в куче различных вариантов предлагаемых в интернете. К тому же не один не сработал.

Есть модуль. В нем я подключаю свой 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,
});
...

Комментарии

Аватар пользователя phpandrei phpandrei 16 мая 2011 в 12:24

а если так попробовать в жаваскрипте(на подобии делал, щас точно не скажу): $get('prof/prof_nodeviewform_save',{gotov: "15"}, null);
если это код у вас рабочий, то подозрительно по мне : data: gotov, а $_GET['gotov'], мож $_GET['data']

Аватар пользователя Alex Bacart Alex Bacart 16 мая 2011 в 12:24

Так с TRUE я угадал?

"m.rad" wrote:
а как в prof_nodeviewform_save проверять кто пишет?

http://xandeadx.ru/blog/drupal/46 тут немного другой случай, но если подумать, думаю получится прикрутить в ваш код.

Аватар пользователя m.rad m.rad 16 мая 2011 в 12:40

"phpandrei" wrote:
подозрительно по мне : data: gotov, а $_GET['gotov'], мож $_GET['data']

согласен, должно быть data: {gotov:gotov}
но по прежнему то что нужно не работает

"Vydrin_AP" wrote:
Так с TRUE я угадал?

а ХЗ Smile

Аватар пользователя phpandrei phpandrei 16 мая 2011 в 12:53

вообще заголовок правльно уходит? в жуке проверяли? У вас какой адрес? Просто если а локальном тестите и локалхост прописан в начале могут быть проблемы. Введите $get('prof/prof_nodeviewform_save',{gotov: "15"}, null); с полным адресом с http и прочей ерундой

Аватар пользователя Alex Bacart Alex Bacart 16 мая 2011 в 12:59

"m.rad" wrote:

так поставив тру мы же полностью разрешаем передачу аргументов

Да! Но это не страшно, если потом будем проверять кто пишет.

"phpandrei" wrote:
вообще заголовок правльно уходит? в жуке проверяли? У вас какой адрес? Просто если а локальном тестите и локалхост прописан в начале могут быть проблемы. Введите $get('prof/prof_nodeviewform_save',{gotov: "15"}, null); с полным адресом с http и прочей ерундой

Вроде так это делается программно:
<?php url('prof/prof_nodeviewform_save', array('absolute' => TRUE)) ?>

Аватар пользователя phpandrei phpandrei 16 мая 2011 в 13:08

я по хлоду недопонимаю чегото:
$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);

прям с рабочего кода взято(когда этого зверя учил)

Аватар пользователя m.rad m.rad 16 мая 2011 в 13:39

я чет тоже не понимаю, может вы свежим глазом найдете ошибку

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

Drupal.behaviors.prof = function(context) {

$.get('http://localhost/prof.ru/prof',{gotov: "15"}, null);

}

Аватар пользователя phpandrei phpandrei 16 мая 2011 в 13:51

хрен знает. http://lemon-computing.livejournal.com/1445.html - чисто учебный и рабочий пример, с адресами только смотрите аккуратнее создаёте модуль с именами и кодом как в примере. не заработает - мож jquery или ещё чего нет

Аватар пользователя phpandrei phpandrei 16 мая 2011 в 14:08

и сам jquery работает? из за денвера думаю врят ли. а если в фаербаге посмотреть парамеры правилно передаются?. Если не выйдет, пример простой какойнить кину попозже.

Аватар пользователя phpandrei phpandrei 16 мая 2011 в 14:44

просто вкладка консоль. обновляеш страницу и там будет выполняться get передача - то есть по сути просто ссылка на функцию но с параметром, то есть что то типа http://localhost/prof.ru/prof?gotov=15
если брать гетом, то там так же можно посмотреть что возвращается

Аватар пользователя m.rad m.rad 16 мая 2011 в 15:08

странное дело

$(document).ready(function() {

$('#edit-save').click(function() {
alert('скрипт норм');
$.get('/prof.ru/prof', {gotov:"15"},null);
return false;
});
});

если ретерн фолс, то судя по фаербагу все отправляется, и возвращается то что нужно.
но ставлю ретерн тру - ошибка, ниче не отправляется, но мне надо чтобы по нажатию на кнопку после выполнения js скрипта продолжился выполняться пхп скрипт.

Аватар пользователя Orion76 Orion76 16 мая 2011 в 16:59

А вместо сохранения значения в $_GET['gotov'].. если добавить hidden-элемент на форму для хранения значения, заполнять его значение ява-скриптом а потом брать из form_state['values']['элемент']?

Логотип drupal.ru

Содержимое сайта публикуется на условиях CreativeCommons Attribution-ShareAlike 3.0 или более поздней версии. Программные коды в тексте статей — на условиях GNU GPL v2 или более поздней версии.

Документация по совместной работе с репозиторием drupal.ru – https://docs.drupal.ru/code

Drupal – торговая марка Дриса Бёйтарта

12+

AltStyle によって変換されたページ (->オリジナル) /