原生JS如何指定ajax返回的数据类型??

好像jquery可以这样指定返回的数据类型dataType:"json", 但是在原生JS里面应该怎么指定呢?我想在前台只接收json格式的数据?

function ajax(url,data,funsucc){
            var oAjax=new XMLHttpRequest();
            oAjax.open('post',url,true);                   
            oAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
            oAjax.send("name="+data);    
            oAjax.onreadystatechange=function(){
              if(oAjax.readyState==4){
                if(oAjax.status==200){
                  funsucc(oAjax.responseText);
                }
              }
            }
        }
阅读 8.8k
5 个回答

不同语言之间不可能存在共通的数据类型的,你看到的所谓的返回数据类型也只是根据函数参数做了类型转换罢了,http通信的内容肯定是字符流

所以你的问题是原生js怎么指定返回数据类型,这正是你所要做的工作,根据你指定的数据类型做数据类型转换并捕获异常数据即可

比如你需要返回json类型,然后你接受的原始数据是data那么你可以

var _data = JSON.parse(data);   // 此处_data 就是你指定的数据类型

下面代码再扩展下,根据datatype做判断你可以,仍旧假设data是内容

datatype = typeof datatype === undefined || typeof datatype === "" ? "text" : datatype;
var _data;
switch(datatype){
    case "json":
        _data = JSON.parse(data);   // 此处_data 就是你指定的数据类型
        break;
    case "text":
        _data = data;
        break;
}
cbfn(_data); //cbfn 是传参进入的回调函数

以上只是举个例子,你根据你的实际情况完善代码即可

如果用原生的ajax,可以先获取响应类型,然后根据不同的响应类型做相应的处理。

var type = oAjax.getResponseHeader("Content-Type");
if (type === 'application/json') {
    // json
} else if (type === 'text/plain') {
   // 字符串
}

前端调用后端的接口,商量好接口返回的数据格式。

比如后端返回xml类型的数据,你前端调用ajax拿到数据后按照xml格式进行解析。
比如后端返回json字符串,你前端调用ajax拿到数据后按照json格式解析。

主要是后台返回过来一大堆东西 有json有字符串 我想只要json部分的数据 这个能做到吗?

使用js取出你想要的那段json字符串(可以使用正则表达式获取),然后转化为javascript对象。

前端不能够指定服务器的返回数据格式, 这个找你们的后端协商解决

JSON.stringify()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题