前端请求接口有时返回json字符串是怎么回事?


前端ajax请求接口时,有时请求回来一个json对象,有时请求回来一个json字符串是怎么回事?

原因:

这与响应头有关。后端response不设置返回类型,则默认会以普通文本处理,js中需要手动使用JSON.parse(str)等方法将返回的字符串转换为json对象使用。

解决办法:

(1) 设置响应头:

<?php
header("Content-type:application/json");//以JSON格式输出
// Content-type:application/json;charset=utf-8
$data = ["status" => "ok", "text" => "成功"];
echo json_encode($data);
//echo json($data) 如果是thinkPHP框架还可以借助助手函数

(2) 框架配置:

例如jquery设置dataType

$.ajax({
    type: "post",
    dataType: "json",//默认解析成json对象
    url: `${url}`,
    data: {},
    success: function (data) {
        console.log("ajax返回的类型是:", typeof data);
        console.log(data);
    }
});

注意

这里和请求头的content-type没有关系。请求头的content-type只会影响后端以怎样的方式解析请求体。


文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论