Jev模型PHP调用返回空值主因是请求格式不合规:Content-Type缺失或错误、state字段类型/编码异常、questions结构不符schema,以及PHP端响应处理失败。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Jev模型在PHP程序中调用返回空值,绝大多数情况不是模型没响应,而是请求根本没被Jev服务端正确解析——它对格式极其严格,且默认静默失败(HTTP 200 + 空body),不报错也不提示。
Content-Type缺失或错误
这是PHP调用中最常踩的坑。Jev只接受标准 application/json 请求体,且必须显式声明请求头:
- 忘记加
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']),网关会直接跳过body解析,返回空响应 - 误用
http_build_query()发送表单数据,即使内容是JSON字符串,服务端也按application/x-www-form-urlencoded处理,导致payload被丢弃 - 用
file_get_contents('php://input')调试时发现为空,大概率就是这个原因
state字段类型或序列化不合规
Jev要求 state 必须是 string / object / array,不能是 null、undefined(PHP里是null)、布尔值或未编码的数组变量:
- 前端传来的
state: {text: "xxx"}若没经json_encode()就直接塞进PHP的cURL body,后端收到的是原始字符串而非JSON对象 - PHP中从数据库读出的state含不可见字符(如
\u2028),json_encode()会静默失败,整个body解析中断 - 用
json_last_error()检查:若返回JSON_ERROR_UTF8或JSON_ERROR_CTRL_CHAR,说明state内容编码或控制字符有问题
questions结构不符合schema
Jev对 questions 是强校验:必须是object(关联数组),每个子项必须有 type 字段,且值只能是小写 noul、choice、score:
立即学习“PHP免费学习笔记(深入)”;
- PHP里写成
'type' => 'Choice'(首字母大写)或'type' => 'select',整个questions会被跳过,response只剩{"results":[]} -
choice类型漏掉options数组,或options是空数组、含空字符串,也会导致该question失效 - 用
json_encode(['questions' => $q], JSON_UNESCAPED_UNICODE)发送前,先var_dump($q)确认结构是否为['q1' => ['type'=>'noul']]这样的二维关联数组
PHP自身处理环节丢失响应
请求可能已成功到达Jev并返回了有效JSON,但在PHP端被意外截断或解析失败:
- 没检查
curl_exec()返回值,直接对false调用json_decode(),结果为null - 响应被gzip压缩但没启用
curl_setopt($ch, CURLOPT_ENCODING, 'gzip'),PHP拿到的是乱码或空字符串 -
json_decode($response, true)后未用json_last_error() === JSON_ERROR_NONE校验,静默得到null



















