将 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的主要内容,如果未能解决你的问题,请参考以下文章

将 cURL 转换为 jQuery AJAX [重复]

将 php 转换为 c#,将 curl 转换为 .net [关闭]

如何将 cURL 转换为邮递员?

从 curl 到 jQuery 的 $.ajax() 函数

将 CURL 转换为 URLRequest

将命令 curl 转换为 javascript