> 文档中心 > 使用Ajax调用接口校验数据出现的问题

使用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("^^^^^^^^^^^^^^^^^^^^^^^^");   }      } });