使用Ajax调用接口校验数据出现的问题

项目场景:

公司项目在表单提交时添加对数据的验证,使用接口发送请求,对数据进行校验后,接收返回参数,判断数据是否准确


问题描述

该问题出现在Ajax调用接口时,使用beforeSend发送Authorization后,服务器返回415报错,无法访问接口并接收数据!但是在另一个页面使用这个方法==beforeSend: function(request)==就可以

Ajax调用接口回传数据代码:

$.ajax({
          type: "POST",
          url: "http://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
          async: false, // 注意同步异步的问题
          beforeSend: function(request) {
          request.setRequestHeader("Authorization","************************************");
          },
           contentType: "application/json",
           data: JSON.stringify([
                  {
                      "###": value
                  }
              ]),
            success: function (response) {
                  //console.log(response.data[0].state);
                 if (response.data[0].state != 0) {
                    js.showErrorMessage("^^^^^^^^^^^^^^^^^^^^^^^^");
                  }
              }
         });

原因分析:

目前还没有找到很合理的解释

这位博主应该和我遇到过相同的问题,但是具体什么原因并未说清
我一直比较疑惑,在此项目的另一个接口请求数据中同样使用Ajax访问,相同的Authorization,不同的是GET请求,就可以使用beforeSend方法request.setRequestHeader(“Authorization”,“***********”);
现在的情况就是做两手准备,一个不行就用另一个。
补充 beforeSend: function(request)beforeSend: function(xmlHttpRequest) 也是有区别的;在这个问题中beforeSend: function(xmlHttpRequest) 也可以解决我的问题;
还需要进一步找出区别在哪里!做上记录以后还可能会用到!


解决方案:

beforeSend: function(request) 方法改为headers方法,或者使用beforeSend: function(xmlHttpRequest) 方法

第一种方案

$.ajax({
          type: "POST",
          url: "http://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
          async: false, // 注意同步异步的问题
          headers: {
               "Authorization": "**************************************"
          },
          contentType: "application/json",
          data: JSON.stringify([
                 {
                     "###": value
                 }
             ]),
           success: function (response) {
                 //console.log(response.data[0].state);
                if (response.data[0].state != 0) {
                   js.showErrorMessage("^^^^^^^^^^^^^^^^^^^^^^^^");
                 }
             }
        });

第二种方案

$.ajax({
          type: "POST",
          url: "http://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
          async: false, // 注意同步异步的问题
          beforeSend: function(xmlHttpRequest) {
       		xmlHttpRequest.setRequestHeader("Authorization","**************************");
           },
          contentType: "application/json",
          data: JSON.stringify([
                 {
                     "###": value
                 }
             ]),
          success: function (response) {
                 //console.log(response.data[0].state);
                if (response.data[0].state != 0) {
                   js.showErrorMessage("^^^^^^^^^^^^^^^^^^^^^^^^");
                 }
             }
        });


版权声明:本文为weixin_43454365原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。