Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX调用得到一个;“400错误请求”;来自我的restapi的响应_Javascript_Jquery_Ajax_Rest - Fatal编程技术网

Javascript AJAX调用得到一个;“400错误请求”;来自我的restapi的响应

Javascript AJAX调用得到一个;“400错误请求”;来自我的restapi的响应,javascript,jquery,ajax,rest,Javascript,Jquery,Ajax,Rest,AJAX调用从我的restapi获得一个“400错误请求”响应。下面是JavaScript: var client_id = 'xxxxxx'; var client_secret = 'yyyyyy'; var username = document.getElementById("inputUsername").value; var password = document.getElementById("inputPassword").value; var params = { cl

AJAX调用从我的restapi获得一个“400错误请求”响应。下面是JavaScript:

var client_id = 'xxxxxx';
var client_secret = 'yyyyyy';

var username = document.getElementById("inputUsername").value;
var password = document.getElementById("inputPassword").value;

var params = {
  client_id: client_id,
  client_secret: client_secret,
  grant_type: 'password',
  username: username,
  password: password
};

var successCallback = function(data, textStatus, jqXHR) {
  console.log('Success: ', textStatus);
};

var errorCallback = function(jqXHR, textStatus, errorThrown) {
  console.log('Error: ', jqXHR.status, textStatus, errorThrown);
};

var completeCallback = function(jqXHR, textStatus) {
  console.log('Complete: ', textStatus);
};

$.ajax({
  traditional: true,
  type: 'POST',
  url: 'http://127.0.0.1:8000/auth/token',
  contentType: 'application/json',
  dataType: 'json',
  data: params,
  success: successCallback,
  error: errorCallback,
  complete: completeCallback
});
我还尝试使用以下方法设置数据,但得到了相同的响应:

var data = jQuery.param(params);
…以及对ajax调用的相应更改:

$.ajax({
  ...
  data: data,
  ...
});
我希望获得与使用curl命令相同的结果:

curl -X POST "http://127.0.0.1:8000/auth/token" -d "client_id=xxxxxx&client_secret=yyyyyy&grant_type=password&username=aaaaaaa&password=bbbbbb"

我在AJAX调用中删除了contentType参数,问题就消失了:

$.ajax({
  traditional: true,
  type: 'POST',
  url: 'http://127.0.0.1:8000/auth/token',
  dataType: 'json',
  data: params,
  success: successCallback,
  error: errorCallback,
  complete: completeCallback
});

我在AJAX调用中删除了contentType参数,问题就消失了:

$.ajax({
  traditional: true,
  type: 'POST',
  url: 'http://127.0.0.1:8000/auth/token',
  dataType: 'json',
  data: params,
  success: successCallback,
  error: errorCallback,
  complete: completeCallback
});

在浏览器中打开开发人员工具。在“网络”选项卡中查看您实际提出的请求。查看“选项”选项卡中报告的任何错误消息。很可能您无法处理服务器上的。谢谢。在阅读了jquery手册中ajax页面内容部分的飞行前选项后,我解决了这个问题。值得注意的是,从JavaScript调用基于OAuth的restapi是不安全的。因此,即使在工作时,这也不是一个好方法。请在浏览器中打开“开发人员工具”。在“网络”选项卡中查看您实际提出的请求。查看“选项”选项卡中报告的任何错误消息。很可能您无法处理服务器上的。谢谢。在阅读了jquery手册中ajax页面内容部分的飞行前选项后,我解决了这个问题。值得注意的是,从JavaScript调用基于OAuth的restapi是不安全的。因此,即使在可行的情况下,这也不是一个好方法。