Php 如何在Drupal中返回JSON对象而不是text/html
我试图传递一个id来获取Ajax中的输出数组,但是我得到的类型是text/html,因此我得到的错误是404NotFound。我需要获取text/json PHP(Drupal): 使用Ajax的JavaScript:Php 如何在Drupal中返回JSON对象而不是text/html,php,jquery,ajax,json,drupal,Php,Jquery,Ajax,Json,Drupal,我试图传递一个id来获取Ajax中的输出数组,但是我得到的类型是text/html,因此我得到的错误是404NotFound。我需要获取text/json PHP(Drupal): 使用Ajax的JavaScript: $('#load').show(); var foodfall_start_date = $('#foodfall-start-date').val(); var foodfall_end_date = $('#foodfall-end-date').val
$('#load').show();
var foodfall_start_date = $('#foodfall-start-date').val();
var foodfall_end_date = $('#foodfall-end-date').val();
var url = '/diner/footfallsource';
$.ajax({
type: 'POST',
dataType: 'html',
url: url,
data : {id : '1'},
success: function(data){
alert(data);
},
error: function(data,tt, ee){
alert(tt+" - "+ ee); // 404 Not Found
}
});
提前感谢。有两个“错误”
- 在AJAX中,必须将类型设置为“json”
- 在PHP中,必须发送正确的头
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
如果您的数据是多个数组、一些对象和属性,您还可以使用有助于构建复杂JSON的库
include('includes/json.php');
$json = new json();
$json->add('status', '200');
$json->add('message', 'success');
$json->add('form', $form);
$json->send();
为什么在$.ajax调用中将数据类型设置为“html”而不是text/json?我也尝试了json,但我不明白这就是为什么我尝试了htmlIf。如果您有404错误,很明显url参数是错误的。在你的浏览器中检查网络控制台。是的,我在网络中查看了它,然后右键单击“在新选项卡中打开”中的“使用新选项卡打开”。一个很酷的插件,你可以用来测试你的php页面(json源代码)是Postman(Google Chrome)很抱歉问这个问题,我可以知道这个类是支持drupal的,我不知道如何设置标题吗?你能提供一些示例或研究文档吗?请帮助我你设置标题就像他说的那样,通过编写
标题(“…”)代码>在您的函数中。。。
include('includes/json.php');
$json = new json();
$json->add('status', '200');
$json->add('message', 'success');
$json->add('form', $form);
$json->send();