将 CURL 转换为 $.Ajax
Posted
技术标签:
【中文标题】将 CURL 转换为 $.Ajax【英文标题】:Convert CURL to $.Ajax 【发布时间】:2016-01-08 01:30:49 【问题描述】:我正在使用 spotify API,示例代码给了我一个 curl 请求来玩弄。我试图将其转换为 ajax 请求,但我遇到了一些麻烦。
卷曲代码:
curl -X POST "https://api.spotify.com/v1/users/12166097089/playlists" -H "Accept: application/json" -H "Authorization: Bearer <super long encryption string>" -H "Content-Type: application/json" --data "\"name\":\"NewPlaylist\",\"public\":false"
我尝试的 AJAX:
function create_playlist(user, hash)
xhr=new XMLHttpRequest();
xhr.onreadystatechange=function()
if(xhr.readyState==4 && xhr.status==200)
console.log(xhr.responseText);
;
$.ajax(
url:'https://api.spotify.com/v1/users/' + user + '/playlists',
beforeSend: function(xhr)
xhr.setRequestHeader('Authorization', 'Bearer ' + '<same super long string>');
xhr.setRequestHeader('Accept-Language', 'en_US');
,
type: 'POST',
contentType: 'application/json',
data:
"name":"Temp Playlist",
"public": false
,
dataType: 'JSON',
success: function (response)
console.log(response);
,
error: function()
alert("it failed");
);
【问题讨论】:
ajax 返回什么? 应该返回一个 JSON 对象 【参考方案1】:如果以application/json
发送,则需要对数据进行字符串化。 $.ajax 不会为你这样做
var dataObj =
"name":"Temp Playlist",
"public": false
$.ajax(
......
data: JSON.stringify(dataObj),
dataType: 'JSON',
success: function (response)
console.log(response);
,
error: function()
alert("it failed");
);
也无需创建new XMLHttpRequest()
。这就是$.ajax
已经在做的事情
【讨论】:
如果我不需要 XMLHttpRequest,如何发送授权标头? 与您的操作方式相同...beforeSend
中的xhr
参数与您在$ajax
之前创建的对象不同。该函数创建一个闭包。 api中还有一个headers
选项
没关系,你是对的,我不需要我可以使用 xhr 的对象!太感谢了。成功了!以上是关于将 CURL 转换为 $.Ajax的主要内容,如果未能解决你的问题,请参考以下文章