为什么drupal_json
只返回页面HTML?
以下是代码:
PHP:
//Add js
function update_ajax_init(){
drupal_add_js("....");
}
//Function hook menu of me
function update_ajax_menu(){
$items = array();
$items['ajax/refresh'] = array(
'type' => MENU_CALLBACK,
'page callback' => 'ajax_update_node',
'title' => 'Ajax update'
);
}
//Function main process return data json
function ajax_update_node(){
return drupal_json(array("flag"=>true));
}
使用Javascript:
$(document).ready(function(){
$("a.update_node").click(function(){
var params = {node_id: $(this).atrr("rel")};
$.ajax(
type: "POST",
url: "ajax/refresh",
data: params,
dataType: "json",
success: function(response){
if (response.flag == true){
alert("Success");
}
}
);
});
});
为什么响应值是所有HTML代码而不是json? {'flag'=>true}
来自filefox的回复:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
..................
..................
答案 0 :(得分:1)
您的问题与How can I return actual JSON using Drupal?
非常相似看起来你会将它用于某些自动完成功能。无论哪种方式,你的功能ajax_update_node
应该是这样的。我也会重命名该函数,因为它看起来像是在实现一个钩子。它与hook_nodeapi
非常相似。
function ajax_update_node() {
$result = array('flag' => true);
drupal_json($result);
exit;
}
答案 1 :(得分:0)
查看http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_json_output/7并在hook_menu声明中设置“发送回调”以进行调用。