我觉得你在这里有相互矛盾的要求。您想使用 ajax 加载表单的结果,但还想将用户重定向到结果页面。
如果您要将用户重定向到另一个页面,只需在视图中创建搜索表单,然后在表单提交中执行 drupal_goto('search-page')。由于您不需要进行页面加载ajax。
如果您想在不进行页面加载的情况下加载结果,这就是 ajax 派上用场的地方。然后,我将使用 ajax 处理程序完全跳过 drupal。不要添加按钮类型,只提交一个没有处理程序的按钮。然后在 ajax 文件中将行为附加到按钮按下。
ajax 应该为此 ajax 回调调用一些唯一的 url,例如“ajax/search-form”。在您的 hook_menu 中注册此网址,例如
$items['ajax/search-form/%/%/%'] = array(
'title' => 'my title'
'page callback' => 'my_module_ajax_search'
'page arguments' => array(2,3,4),
);
return $items;
然后在你的函数中:
function my_module_ajax_search($first_param, $second, $third) {
// Generate output and return it to the calling ajax function through print.
$output = '<div>my output</div>'
print $output;
// Make sure Drupal closes out then bails so it doesn't output another
// page wrapper.
module_invoke_all('exit'); // Called automatically in Drupal 7 but not 6.
exit();
}
你的 Ajax 看起来像:
$('.button').click(function(
value1 = $('.box1').value() // dont remember the actual function to extract a text field value.
value2 = ...
$.ajax({
url: Drupal.settings.basePath + 'ajax/search-form/' + value1 + '/' + value2 + '/' + value3,
success: function(data) {
$('.my content').html(data);
}
});
)