拜托,有没有人可以帮我解决这个问题?
我正在向php文件发送ajax请求。 一切都很好,直到我将dataType从'html'更改为'json'。
在尝试调试时, 我开始在php文件中的某些点之后放这三行代码:
header('Content-type: application/json');
echo json_encode(Array('message' => 'success'));
die();
这是我发现的:
我不能使用require_once来要求类,但我只能使用include:在第一种情况下,ajax给我错误,在第二种情况下,它给了我应该的消息'成功'。
我不能在php文件中使用全局变量,只能使用默认变量。
我不能使用以前包含的类的静态方法,如MyClass :: myStaticMethod(),只能使用实例。
也许还有其他我尚未发现的东西......
这是正常还是我做错了什么? 我在哪里可以找到我无法使用的php功能列表? 有没有办法克服这个问题,因为我需要这些功能?
答案 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]
如果你发现困难,请告诉我。
由于