Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Drupal中返回JSON对象而不是text/html_Php_Jquery_Ajax_Json_Drupal - Fatal编程技术网

Php 如何在Drupal中返回JSON对象而不是text/html

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

我试图传递一个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();                    
                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();