在drupal中使用Ajax时继续获得404

时间:2012-02-22 21:05:54

标签: json drupal jquery

您好我的(新手)Drupal网站上有一个ajax调用问题。我试图通过将jQuery发布到我的Drupal模块中的函数来保存表单字段中的一些数据。这是我的代码:

// in drupal
function mymodule_menu() {
    $items = array();
    $items['mymodule/set/data'] = array(
        'page callback' => 'mymodule_set_data',
        'type' => MENU_SUGGESTED_ITEM,
        'access arguments' => array('access content'),
    );
    return $items;
}
function mymodule_set_data($var) {
    drupal_json_output(array('status' => 'OK', 'data' => "return_something"));
}

// in my js file
jQuery("#form_element").on('blur',function(){
  jQuery.ajax({
    type: 'POST',
    url: "mymodule/set/data",
    dataType: 'json',
    data:{
      fu: 'bar'
    },
    success: function(data) {
      console.log(data);
    },
    error: function(jqXHR, textStatus, errorThrown){
      console.log(errorThrown);
    }
  });
});

一切顺利,jQuery get触发,ajax调用正在服务器上捕获,我从服务器返回{“status”:“OK”,“data”:“return_something”}。除了呼叫状态是404 ... :(

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。

Ik正在将我的应用程序移动到其他主机,因为我需要更改ajax操作正在调用的URL。我决定使用以下代码使其动态化:

drupal_add_js(array('url' => $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']), 'setting');

我将我的ajax调用网址更改为: “http://”+ Drupal.settings.url +“/ set / data

这导致我的JS调用以下URL: http://host/drupal/?q=mymodule/set/data 而不是旧的: http://host/drupal/mymodule/set/data

这是Drupal喜欢的东西:)

仍然我不明白为什么我的drupal接受了http://host/drupal/mymodule/set/data,处理了我的数据但返回了404。