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@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@gmail.com>  wrote:
      
 Does this help - http://drupal.org/node/44895 ?

 On Thu, Apr 15, 2010 at 3:43 PM, John Mitchell<mitchelljj98@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@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/ ]