当我使用php json_encode响应ajax请求时,我无法做的事情

时间:2014-07-14 10:20:57

标签: php jquery ajax

拜托,有没有人可以帮我解决这个问题?

我正在向php文件发送ajax请求。 一切都很好,直到我将dataType从'html'更改为'json'。

在尝试调试时, 我开始在php文件中的某些点之后放这三行代码:

header('Content-type: application/json');
echo json_encode(Array('message' => 'success'));
die(); 

这是我发现的:

  1. 我不能使用require_once来要求类,但我只能使用include:在第一种情况下,ajax给我错误,在第二种情况下,它给了我应该的消息'成功'。

  2. 我不能在php文件中使用全局变量,只能使用默认变量。

  3. 我不能使用以前包含的类的静态方法,如MyClass :: myStaticMethod(),只能使用实例。

  4. 也许还有其他我尚未发现的东西......

  5. 这是正常还是我做错了什么? 我在哪里可以找到我无法使用的php功能列表? 有没有办法克服这个问题,因为我需要这些功能?

3 个答案:

答案 0 :(得分:1)

在服务器端,只要遵守JSON规则,就可以随心所欲 作为一种方法,您可以开始构建一个有效的静态JSON文件。然后用PHP生成的等价物逐个替换它的部分,这意味着(并且仅限于),标题和内容

在浏览器方面,您需要的是预定义格式(PHP脚本的输出),无法知道是否使用了required_once或全局变量。

答案 1 :(得分:0)

看看

  <?php
        //1st Situation 

          header('Content-type: application/json');
          echo json_encode(Array('message' => 'success'));

   ?>
         //respective JS would be 
  <script>
              var json = ajax_response;

  </script>


  <?php
         //2nd Situation with no content header (html default)
          echo json_encode(Array('message' => 'success'));

   ?>
  //respective JS would be 


  <script>
              var json =$.parseJSON(ajax_response);

  </script>

答案 2 :(得分:0)

您需要在服务器端执行的操作是将content-type设置为application / json,使用json_encode函数对数据进行编码并输出。

<?php
header('content-type: application/json; charset=utf-8');

$data = array(1, 2, 3, 4, 5, 6, 7, 8, 9);

echo json_encode($data);

?>

您可以通过运行以下行在控制台中测试它:

$.ajax({url: 'data.php'})
// Response: [1,2,3,4,5,6,7,8,9]

如果你发现困难,请告诉我。

由于