[support] I would like to be able within a Drupal module's hook do an ajax call to a Java Servlet.

Seth Freach sfreach at gmail.com
Thu Apr 15 13:27:00 UTC 2010


John,
I'm not sure exactly what you mean by "a hook function".  Are you 
implementing an already defined hook or are you defining a hook for 
other modules to implement?
You can use drupal_add_js() anywhere you want JS to be inserted into a 
page, so yes, within hook functions too.

If the resource is on a different server, that's fine, then the Drupal 
php will only be acting as a client in your situation.   I think what 
you are looking for is a way to write php code that will get translated 
into JS ajax code magically via the platform?  That does happen in some 
platforms (such as CakePHP) but not in Drupal 6.  In Drupal 6, there is 
some integration between the form api and AHAH calls (see: 
http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html/6#ahah) 
but if you want to do pure AJAX, you'll need to write the JS calls and  
success handler yourself and then add that JS code to the page with 
drupal_add_js().

Example of a form function:
<?php
function example_my_form() {
  $form['email'] = array(
    '#type' => 'textfield',
    '#title' => t('E-mail'),
    '#attributes' => array('id' => 'example-my-form-email');
  );
  $form['bttn'] = array(
    '#type' => 'button',
    '#value' => t('Click Me'),
    '#attributes' => array('id' => 'example-my-form-button');
  );
  $form['div'] = array(
    '#value' => '<div id="example-my-form-div"></div>',
  );

  $js = "
    Drupal.behaviors.example = function() {
      $.ajax({
        url : 'path/to/my/external/tomcat/resource?email=' + 
$('#example-my-form-email').val(),
        success : function(data) {
          // parse the return data and add it to the div or whatever...
          $('#example-my-form-div').html(data.someValue);
        }
      });
    }
  ";
  drupal_add_js($js, 'inline');

  return $form;
}
?>


If you want to do AJAX in Drupal 7, you can use the above approach, or 
have a look again at the link in my first email.

Seth

John Mitchell wrote:
> So you start with a form and within the form you use drupal_add_js to
> embed the ajax within the form.  Correct?
>
> If I have a custom module that has a hook function and within the hook
> function can I just use drupal_add_js to do an ajax call?
>
> Sorry for the stupid questions I am new to Drupal and php.
>
> Thanks,
>
> John
>
> On 4/15/10, Jamie Holly <hovercrafter at earthlink.net> wrote:
>   
>> Look at drupal_add_js
>>
>> http://api.drupal.org/api/function/drupal_add_js
>>
>>
>> Jamie Holly
>> http://www.intoxination.net
>> http://www.hollyit.net
>>
>>
>> On 4/15/2010 6:51 AM, John Mitchell wrote:
>>     
>>> I am trying to make this as simple as possible:
>>>
>>> As an example (listed below) I have a javascript ajax call to a java
>>> servlet within my existing Apache Tomcat web application not Drupal.
>>> All that would need to be modified would that the URL have to be the
>>> full path.
>>>
>>> Is their a way within Drupal to embed a javascript call similar to the
>>> one listed below?
>>>
>>> Thanks,
>>>
>>> John
>>>
>>> <script type = "text/javascript">
>>> function download(link){
>>>        var email = document.getElementById('email');
>>>        var xmlHttpReq = new XMLHttpRequest();
>>>        var url = 'ecommerce?command=serve&name=' + link + '&email=' +
>>> email.value;
>>>        xmlHttpReq.open('post', url, true);
>>>        xmlHttpReq.onreadystatechange = function() {
>>>              if (xmlHttpReq.readyState != 4)  {
>>>                    return;
>>>              }
>>>              else {
>>>                    var responseText = xmlHttpReq.responseText;
>>>                    return false;
>>>              }
>>>        }
>>>        xmlHttpReq.send(null);
>>> }
>>> </script>
>>>
>>>
>>>
>>> On 4/15/10, sumeet pareek<positivecharge at gmail.com>  wrote:
>>>       
>>>>  Does this help - http://drupal.org/node/44895 ?
>>>>
>>>>  On Thu, Apr 15, 2010 at 3:43 PM, John Mitchell<mitchelljj98 at gmail.com>
>>>>  wrote:
>>>>         
>>>>>  Let me rephrase my question: I currently within the same server have
>>>>>  Apache/Drupal and Apache Tomcat/Java.  I would like to be able within
>>>>>  a Drupal module's hook do an ajax call to a Java Servlet.
>>>>>
>>>>>  How would I do this within Drupal version 6?
>>>>>
>>>>>  For future reference how would I do this within Drupal version 7?
>>>>>
>>>>>  Thanks,
>>>>>
>>>>>  John
>>>>>
>>>>>  On 4/14/10, Seth Freach<sfreach at gmail.com>  wrote:
>>>>>           
>>>>>>  John Mitchell wrote:
>>>>>>             
>>>>>>>  How would I do an ajax call within my own custom module?
>>>>>>>
>>>>>>>  Thanks,
>>>>>>>
>>>>>>>  John
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>>  You will probably need 2 menu items:
>>>>>>   - The first to define the page that will be the ajax client.  Ie,
>>>>>> the
>>>>>>  url of the page that this all happens on, a regular drupal page that
>>>>>> has
>>>>>>  called drupal_add_js() to add some JS code that will do a
>>>>>> $.ajax({...});
>>>>>>  call (or other jquery asynchronous call).  This menu item might not
>>>>>> be
>>>>>>  needed though if the JS is added in a block, or inserted via
>>>>>>  hook_form_alter or hook_nodeapi, etc.
>>>>>>   - The second menu item will define the ajax server.  It should be
>>>>>>  'type'=>MENU_CALLBACK and have the appropriate access checks defined
>>>>>> as
>>>>>>  well.  The callback function associated with this path should,
>>>>>> instead
>>>>>>  of returning themed output, end with: drupal_json(array(...));
>>>>>> exit();
>>>>>>  where the array(...) is an associative array that you want to hand
>>>>>> back
>>>>>>  to the calling page in JSON format.
>>>>>>
>>>>>>  If you're doing this for D7, look at:
>>>>>>
>>>>>> http://api.drupal.org/api/drupal/developer--examples--ajax_example--ajax_example.module/7
>>>>>>
>>>>>>  Seth
>>>>>>  --
>>>>>>  [ Drupal support list | http://lists.drupal.org/ ]
>>>>>>
>>>>>>             
>>>>>  --
>>>>>  John J. Mitchell
>>>>>  --
>>>>>  [ Drupal support list | http://lists.drupal.org/ ]
>>>>>
>>>>>           
>>>>
>>>>  --
>>>>  Cheers
>>>>  Sumeet Pareek
>>>>  --
>>>>  [ Drupal support list | http://lists.drupal.org/ ]
>>>>
>>>>         
>>>
>>>       
>> --
>> [ Drupal support list | http://lists.drupal.org/ ]
>>
>>     
>
>
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/support/attachments/20100415/18ce7f1b/attachment-0001.html 


More information about the support mailing list