httppost转成ajax,将AJAX或XHR POST请求转换为AngularJS $ http POST请求

我见过类似的事件,例如this。但是,它们似乎都没有遇到我遇到的同样问题:发出POST请求并获得500 Internal Server Error作为响应。

我试图将我从邮差命令生成的以下AJAX或XHR转换为使用$http服务的AngularJS方法:

xhr:

var data = "json=";

var xhr = new XMLHttpRequest();

xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {

if (this.readyState === 4) {

console.log(this.responseText);

}

});

xhr.open("POST", "https://myJenkins.com/job/Ansible_Deploy/build?token=");

xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

xhr.setRequestHeader("Authorization", "Basic ");

xhr.send(data);

ajax:

var settings = {

"async": true,

"crossDomain": true,

"url": "https://myJenkins.com/job/Ansible_Deploy/build?token=",

"method": "POST",

"headers": {

"content-type": "application/x-www-form-urlencoded",

"authorization": "Basic "

},

"data": {

"json": ""

}

};

$.ajax(settings).done(function (response) {

console.log(response);

});

破碎的AngularJS实施:

var heads = new Headers();

heads.append('Content-Type', 'application/x-www-form-urlencoded');

heads.append('Authorization', 'Basic ');

$http({

url: "https://myJenkins.com/job/Ansible_Deploy/build?token=",

method: "POST",

data: ,

headers: heads

}).then(function successCallback(response) {

console.log(response.data);

}, function errorCallback(response) {

console.log(response.statusText);

});

上述两种Ajax和xhr实现都可以正常工作。如上所述,角度方法给了我500内部服务器错误。

为什么会发生这种情况的任何想法?如果有帮助,我可以提供具体信息,例如Chrome检查员网络标签中的信息。只是让我知道我应该截取屏幕截图,并在此处发布。

编辑:正如评论中所承诺的,我的解决方案如下。

$http({

url: "https://myJenkins.com/job/Ansible_Deploy/build?token=",

method: "POST",

data: 'json=' + JSON.stringify(data),

headers: {

'Accept': "*/*",

'Content-Type': 'application/x-www-form-urlencoded',

'Authorization': 'Basic '

}

}).then(function successCallback(response) {

console.log(response.data);

}, function errorCallback(response) {

console.log(response.statusText);

});

编辑2:如果你偶然发现这个问题,因为你还得到500 Internal Server Error并且仍然不了解这是如何解决的,那么通过确保CORS的组合解决了这个问题在包含端点的服务器上设置(由Crome的检查员指出抛出Access-Control-*错误)以及正确格式化x-www-form-urlencoded以使Jenkins接受,这需要发送数据形式为json={"parameter":[{"name":, "value":}, ...]}。此外,如果条目的value是嵌套的,则需要转义。有关详细信息,请参阅this answer。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值