您好我的(新手)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 ... :(
答案 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。