2017-06-01 71 views
2

我已經絞盡腦汁想到這一點,我似乎無法找出解決方案,請謙虛地尋求您的幫助。我在chrome上使用restlet客戶端,它使用cURL命令從服務器獲取json。我需要將這個curl命令轉換爲AJAX,並且我將提供儘可能多的代碼。你能幫我把這個轉換成jQuery的Ajax嗎?cURL到jQuery AJAX轉換

cURL Command: 

curl -i -L -X GET \ 
    -H "Authorization:Basic base64username:base64password" \ 
'https://internalserverurl' 

這裏就是我有我的jQuery AJAX方法:

function make_base_auth(user, password) { 
      var tok = user + ':' + password; 
      var hash = Base64.encode(tok); 
      return "Basic " + hash; 
     } 

     function getData() { 
      $.ajax({ 
       url: "https://internalurl", 
       beforeSend: function(xhr) { 
        xhr.setRequestHeader("Authorization", "Basic " + btoa("username:password")); 
       }, 
       type: 'GET', 
       dataType: 'json', 
       contentType: 'application/json', 
       processData: false, 
       success: function (data) { 
        alert(JSON.stringify(data)); 
        console.log(data); 
       }, 
       error: function (data) { 
        var strBuilder = []; 
        for(key in data){ 
          if (data.hasOwnProperty(key)) { 
          strBuilder.push(key + ":" + data[key] + "<br><br>"); 
         } 
        } 
        alert(strBuilder.join("")); 
         $('#errordiv').html(strBuilder); 
       } 
      }); 
     } 

謝謝大家的協助。

+0

我在這裏看不到任何實際問題。 – CBroe

+0

你是對的@CBroe謝謝你的收穫。道歉。 – BatmanIsBruceWayne

+0

您可以使用$ .ajax方法。遵循在成功塊中包含您的成功回調方法。 – franzke

回答

1

我在評論中說過,但是您可以使用$ .ajax函數並將您的標頭設置在beforeSend塊中。

$.ajax({ 
     url: 'https://internalserverurl', 
     type: 'GET', 
     dataType: 'json', 
     success: function() { alert('hello!'); }, 
     error: function() { alert('boo!'); }, 
     beforeSend: setHeader 
    }); 
    }); 

    function setHeader(xhr) { 
    xhr.setRequestHeader('Authorization':'Basic base64username:base64password'); 

    } 
+0

非常感謝@franzke !!!這工作!現在我只需要讓它在IE之外工作,我就會成爲金牌(證書是自簽名的,所以現代瀏覽器顯然會關閉它)。 – BatmanIsBruceWayne