[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:45:41 UTC 2010


Of course, that $.ajax({...}) call below should be inside of a click() 
handler on the button element or similar... but, you get the idea... :)

Seth

Seth Freach wrote:
> 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/b561a849/attachment.html 


More information about the support mailing list