2017-06-01 1 views
2

Ich habe mein Gehirn über das und ich kann nicht scheinen, die Lösung zu lösen, also bitten Sie demütig um Ihre Unterstützung bitte. Ich verwende den Restlet-Client in Chrome, der einen cURL-Befehl verwendet, um json von einem Server zu holen. Ich muss diesen curl-Befehl in AJAX konvertieren, und ich werde so viel Code bereitstellen, wie ich darf. Könntest du mir bitte helfen, indem du dies in jQuerys Ajax umwandelst?cURL zu jQuery AJAX Umwandlung

cURL Command: 

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

Hier ist, was ich für meine jQuery AJAX-Methode haben:

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); 
       } 
      }); 
     } 

Danke allen für Ihre Unterstützung.

+0

Ich sehe keine eigentliche Frage hier. – CBroe

+0

Sie sind richtig @CBroe danke für diesen Fang. Entschuldigung. – BatmanIsBruceWayne

+0

Sie können die $ .ajax-Methode verwenden. Befolgen Sie Ihre Erfolgsrückrufmethode im Erfolgsblock. – franzke

Antwort

1

Ich sagte es in den Kommentaren, aber Sie können die Funktion $ .ajax verwenden und Ihre Header im beforeSend-Block festlegen.

$.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

Vielen Dank @franzke !!! Das funktioniert! Jetzt muss ich es nur noch außerhalb des IE zur Arbeit bringen und ich werde golden sein (das Zertifikat ist selbstsigniert, also schließen moderne Browser es offensichtlich ab). – BatmanIsBruceWayne