您好,欢迎访问一九零五行业门户网

原生Ajax的实现MIME类型(附代码)

这次给大家带来原生ajax的实现mime类型(附代码),原生ajax实现mime类型的注意事项有哪些,下面就是实战案例,一起来看一下。
问题描述
下面的例子是一个ajax的post请求的代码,这段代码在测试运行的时候,发现返回的状态码为400,服务器不能理解的请求,后来经过查看和修改,发现只需要将下面的代码稍微改造一下就好了
原代码
var send = function (url, params, fn) {   var me = this;   var xhr = null;   var data = '';   fn = fn || function() {};   params = params || {};   for(var item in params) {    data += item + '=' + params[item] + '&';   }   if(data[data.length - 1] == '&') {    data = data.slice(0, data.length - 1);   }   if(window.xmlhttprequest) {    xhr = new xmlhttprequest();   }else if(window.activexobject) {    xhr= new activexobject(microsoft.xmlhttp);   }   xhr.open(post, url, true);   xhr.setrequestheader(content-type, application/json);   xhr.onreadystatechange = function () {    if(xhr.readystate == 4 && (xhr.status == 200 || xhr.status == 304)) {     fn(json.parse(xhr.responsetext));    }   };   xhr.send(json.stringify(params)); }
修改之后的代码
var send = function (url, params, fn) {     var me = this;     var xhr = null;     fn = fn || function() {};     params = params || {};     if(window.xmlhttprequest) {       xhr = new xmlhttprequest();     }else if(window.activexobject) {       xhr= new activexobject(microsoft.xmlhttp);     }     xhr.open(post, url, true);     xhr.setrequestheader(content-type, application/json);     xhr.onreadystatechange = function () {       if(xhr.readystate == 4 && (xhr.status == 200 || xhr.status == 304)) {         fn(json.parse(xhr.responsetext));       }     };     xhr.send(json.stringify(params)); }
这两段代码的差别就是,修改之后的代码去掉了关于data这个变量的处理以及在send中传递的参数变为了params这个变量
问题解惑
问题是解决了,但是我心里的疑问却产生了,之前在使用原生的ajax的时候,当method为post的时候,传递的参数的形式是”name=123&age=32”这样子的,那么为什么现在传递一个序列化的json对象就可以了呢?
这时候我注意到自己所加的mime类型,也就是设置content-type的那处,我设置的是application/json,这样看起来就解释的通了,这时候我回想起之前常用的mime类型是“application/x-www-form-urlencoded”,这种时候send方法传递的参数就要求是”name=123&age=32”这样子的,到这里,解惑完毕啦(~ ̄▽ ̄)~
补充
顺便说下405这个状态码,上一次见到它的时候,是我前端发送请求的时候,传递的参数不对,这次遇到它的时候,是因为后台还没有添加这个请求的处理
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
判断身份证与银行卡号格式的正则怎么写
js的正则如何校验非零的正整数
以上就是原生ajax的实现mime类型(附代码)的详细内容。
其它类似信息

推荐信息