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, JohnYou 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/ ]