如何向Drupal 6中的特定模块发送ajax post请求?

时间:2011-11-17 17:25:25

标签: javascript ajax drupal drupal-6

我想将一个ajax post请求发送到Drupal6中名为sampleTest的模块。 我已经尝试了一些代码,但我不知道如何将模块url放在jquery ajax函数中。

<script type="text/javascript">
$(function(){
    $("#one").click(function(){
        $.ajax({ 
            type: 'POST', 
            url: 'http://localhost/drupal/www/admin/build/modules/module/get/contact', 
            dataType: 'json', 
            data: "test",
            success:function(data) {
                alert("123");
            },
            complete: function(data){
                alert("complete");  
            } 
        });
    });
});
</script>

1 个答案:

答案 0 :(得分:5)

您无法向模块发送AJAX请求,而是在模块中实现路径(使用hook_menu()),为输出AJAX响应的路径提供页面回调,然后调用AJAX调用中的那条路径。这是一个非常基本的例子:

function mymodule_menu() {
  $items['ajax-test'] = array(
    'access callback' => TRUE,
    'page callback' => 'mymodule_ajax_callback',
    'type' => MENU_CALLBACK
  );
}

function mymodule_ajax_callback() {
  $post_data = $_POST;

  // Do something with the post data

  $output = array('status' => 'OK');

  // For Drupal 6
  drupal_json($output);
  exit();

  // Or for Drupal 7, just in case you want to know
  drupal_json_output($output);
  drupal_exit();
}

然后你的JS看起来像这样:

$(function(){
  $("#one").click(function(){
    $.ajax({ 
      type: 'POST', 
      url: '/drupal/ajax-test', 
      dataType: 'json', 
      data: "test",
      success:function(data) { 
        alert(data.status); 
      },
      complete: function(data){
        alert("complete")  
      }
    });
  });
});