Конвертировать команду curl в javascript

Я пытаюсь преобразовать команду в curl в javascript. Я искал в Google, но не нашел решения или объяснения, которые могли бы мне помочь. Команда curl такая:

curl https://www.google.com/accounts/ClientLogin 
--data-urlencode Email=mail@example.com 
--data-urlencode Passwd=******* 
-d accountType=GOOGLE 
-d source=Google-cURL-Example 
-d service=lh2

С этим я хочу преобразовать команду в функцию $.ajax(). Моя проблема в том, что я не знаю, что мне нужно добавить в функцию setHeader для параметров, присутствующих в команде curl.

$.ajax({
            url: "https://www.google.com/accounts/ClientLogin",
            type: "GET",

        success: function(data) { alert('hello!' + data); },
        error: function(html) { alert(html); },
        beforeSend: setHeader
    });


    function setHeader(xhr) {
       //
    }

2 ответа

Решение

По умолчанию $.ajax() преобразует данные в строку запроса, если она еще не является строкой, поскольку данные здесь являются объектом, изменяют данные на строку и затем устанавливают processData: false, чтобы он не конвертировался в строку запроса.

$.ajax({
 url: "https://www.google.com/accounts/ClientLogin",
 beforeSend: function(xhr) { 
  xhr.setRequestHeader("Authorization", "Basic " + btoa("username:password")); 
 },
 type: 'POST',
 dataType: 'json',
 contentType: 'application/json',
 processData: false,
 data: '{"foo":"bar"}',
 success: function (data) {
  alert(JSON.stringify(data));
},
  error: function(){
   alert("Cannot get data");
 }
});

Если вы можете использоватьfetch()вместо$.ajax, вы можете использовать curlconverter.com/javascript/ , и он преобразует вашу команду в

      fetch('https://www.google.com/accounts/ClientLogin', {
    method: 'POST',
    body: new URLSearchParams({
        'accountType': 'GOOGLE',
        'source': 'Google-cURL-Example',
        'service': 'lh2'
    })
});
Другие вопросы по тегам