ajax POST

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

Аватар пользователя imarky4 imarky4 10 августа 2011 в 13:26

Есть js:

jQuery('.download_docs').click(function() {                    
        //alert(jQuery('.FIO').text());  
       
    jQuery.ajax({
       type: 'POST', // Use the POST method.
       url: 'fill_rtf.php',
           data: 'FIO=1215'+jQuery('.FIO').text() // Pass a key/value pair.        
        });    
});

алерт срабатывает. Но в fill_rtf.php ничего не передается.

консоль в firebug пишет :

Заголовки ответа
Date Wed, 10 Aug 2011 09:18:14 GMT
Server Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.3.3
X-Powered-By PHP/5.3.3
Content-Disposition inline; filename=docs.rtf

Параметры application/x-www-form-urlencoded
FIO 1215Петров Василий Иванович
Исходный код
FIO=1215Петров Василий Иванович

Ответ :
....\ltrch\fcs0 \fs24\insrsid2194361\charrsid2194361 1215Петров Василий Иванович}{\rtlch\fcs1 \af0 \ltrch...

Помогите разобраться?

Комментарии

Аватар пользователя imarky4 imarky4 10 августа 2011 в 17:09

а что с этим делать?) с тем что вернулось...
ну то есть, обратно вернуться ничего не должно, надо лишь передать параметры в другую php. вот в конечную они не приходят.

Аватар пользователя imarky4 imarky4 10 августа 2011 в 17:15

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

Аватар пользователя Stass Stass 10 августа 2011 в 18:45

"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:

$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});

вот вам и написали, то что вам надо.
Правда помню сталкивался с проблемой post и использовал метод get. Попробуйте get.

"imarky4" wrote:

а скажите пжл такую вещь - кроме написания оной js и подключения ее через drupal_add_js, надо ли еще что ниб делать? в смысле menu_hook или еще что ниб...

А если в урле вы обращаетесть к друпалу в аякс запросе, то конечно соответвующей Hook_menu надо реализовать и возвращать в реаливанной функции типа

<?php
    
print drupal_to_js($datas);
    exit();
?>
Аватар пользователя imarky4 imarky4 10 августа 2011 в 18:54

это в js?

Drupal.behaviors.blockaway= function (context) {
jQuery(document).ready(function() {

jQuery('.download_docs').click(function() {                    
        //alert(jQuery('.FIO').text());  
    jQuery.ajax({
         type: "POST",
             url: "fill_rtf.php",
         data: "FIO=John",
         success: function(msg){
            alert( "Data Saved: " + msg );
        }
     });       
});      

               
});

};

теперь даже Ваш alert( "Data Saved: " + msg ); отвалился. В конечную fill_rtf.php ничего не передается.

Аватар пользователя imarky4 imarky4 10 августа 2011 в 19:39

нет в аяксе обращаюсь к своей php, которая получает данные и кидает все в rtf файл. Никакого друпала.

<?php
/**
* file
* Use this module to learn about jQuery.
*/
/**
* Implements hook_init().
*/
function blockaway_init() {
drupal_add_js(drupal_get_path('module', 'blockaway') .'/blockaway.js');
}
?>

в js :
Drupal.behaviors.blockaway

правильно ведь?

p.s. видимо не blockaway...

Аватар пользователя sas@drupal.org sas@drupal.org 10 августа 2011 в 23:00

Упс.

   Drupal.menu_update_parent_list = function () {
    var values = [];

    $('input:checked', $('fieldset#edit-menu')).each(function () {
      // Get the names of all checked menus.
      values.push(Drupal.checkPlain($.trim($(this).val())));
    });

    var url = Drupal.settings.basePath + 'admin/structure/menu/parents';
    $.ajax({
      url: location.protocol + '//' + location.host + url,
      type: 'POST',
      data: {'menus[]' : values},
      dataType: 'json',
      success: function (options) {
        // Save key of last selected element.
        var selected = $('fieldset#edit-menu #edit-menu-parent :selected').val();
        // Remove all exisiting options from dropdown.
        $('fieldset#edit-menu #edit-menu-parent').children().remove();
        // Add new options to dropdown.
        jQuery.each(options, function(index, value) {
          $('fieldset#edit-menu #edit-menu-parent').append(
            $('<option ' + (index == selected ? ' selected="selected"' : '') + '></option>').val(index).text(value)
          );
        });
      }
    });
  }

Аватар пользователя sas@drupal.org sas@drupal.org 11 августа 2011 в 10:12

1) Url обрабатывается через hook_menu(), т.е. функции работают на определенных url а не php файлах.
2) Обратите внимание на формат - data: {'var_name' : values} , правда там и dataType: 'json', но возможно Вам то что надо
3) Поставьте себе examples там есть разных ajax примеров рабочих, если не хотите с core примерами разбираться.

Аватар пользователя sas@drupal.org sas@drupal.org 11 августа 2011 в 17:09

Нет это в файле
\modules\menu\menu.admin.js
а hook_menu
в файле
Y:\home\getqr.ru.sas\www\modules\menu\menu.module

<?php
/**
 * Implements hook_menu().
 */
function menu_menu() { 
... 
 
$items['admin/structure/menu/parents'] = array(
    
'title' => 'Parent menu items',
    
'page callback' => 'menu_parent_options_js',
    
'type' => MENU_CALLBACK,
    
'access arguments' => array(TRUE),
  ); 
...
?>
Аватар пользователя imarky4 imarky4 16 августа 2011 в 11:29

Упорно не хочет работать.
Итак, есть вьюха, на которой поле с custom text и ссылка на http://test1.ru/rtf.

Сам модуль:


<?php
/**
file
* Use this module to learn about jQuery.
*/
/**
* Implements hook_init().
*/
function blockaway_init() {
drupal_add_js(drupal_get_path('module''blockaway') .'/blockaway.js'); 
}

/**
 * Implementation of hook_menu().
 */
function blockaway_menu() {  
  
$items['rtf'] = array(
    
'title' => 'rtf page',
    
'page callback' => 'blockaway_rtf',    
    
'access callback' => TRUE,
    
'type' => MENU_VISIBLE_IN_BREADCRUMB
  
); 
  return 
$items;

 
function 
blockaway_rtf () {
  global 
$user;
   require_once(
"popRTF.php");  

    

$vars = array('FIO'        =>  utf8_convert($_POST['fio'],"w")                 
                 );

            

$new_rtf populate_RTF($vars"templates/somefile.rtf");        
    
    
header'Content-Type: text/html; charset = utf-8');
    
header("Content-type: application/msword");
    
header("Content-disposition: inline;      filename=docs.rtf");
    
header("Content-length: " strlen($new_rtf)); 
    echo 
$new_rtf;
    exit;  
}  
?>

javascript :

//Drupal.behaviors.blockaway = function (context) {

jQuery(document).ready(function() {
               
    jQuery('.dwnld').click(function() {                    
                var url = Drupal.settings.basePath + 'rtf';                                            
                jQuery.ajax({
                        type: 'POST',
                        url: location.protocol + '//' + location.host + url,
                        dataType: 'json',                      
                        data: 'fio=John'                                               
                });            
   });         
});
//}      

при нажатии на кнопку отдается файл на скачивание, но параметры в $_POST не передаются.
Если раскоментить Drupal.behaviors.blockaway = function (context) { то js вообще отваливается.
В чем косяк, подскажите плз?

upd : таки никто и не подскажет?