Warum wird ein „200 OK“ jQuery GET-Anforderung einen leeren String zurück, wenn Tumblr Lesen „Zufrieden“ Beiträge mit Basic-Auth?

StackOverflow https://stackoverflow.com/questions/4171776

  •  09-10-2019
  •  | 
  •  

Frage

... wenn ich auf die Daten zugreifen kann, die direkte URL mit » http://www.tumblr.com/api/likes?email=myemail@gmail.com&password=mypassword&debug=1 , die mir die Beiträge gibt, die ich suche:

Array
(
    [posts] => Array
        (
            [0] => Array
                (
                    [id] => 1482002179
                    [url] => http://staff.tumblr.com/post/1482002179
                    [url-with-slug] => http://staff.tumblr.com/post/1482002179/the-new-dashboard-for-iphone
                    [type] => photo
                    [date-gmt] => 2010-11-04 21:19:33 GMT
                    [date] => Thu, 04 Nov 2010 17:19:33
                    [bookmarklet] => 0
                    [mobile] => 0
                    [feed-item] => 
                    [from-feed-id] => 0
                    [unix-timestamp] => 1288905573
                    [format] => html
                    [reblog-key] => 8LVzAqTT
                    [slug] => the-new-dashboard-for-iphone
                    [liked] => 1
                    [note-count] => 2378
                    [tumblelog] => Array
                        (
                            [title] => Tumblr Staff
                            [name] => staff
                            [cname] => 
                            [url] => http://staff.tumblr.com/
                            [timezone] => US/Eastern
                            [avatar_url_16] => http://28.media.tumblr.com/avatar_013241641371_16.png
                            [avatar_url_24] => http://26.media.tumblr.com/avatar_013241641371_24.png

... und so weiter.

Aber nicht so viel Glück, wenn ich versuche, das gleiche mit jQuery-Code zu erreichen, wo ich diese GET-Anforderung bin mit mit authentifiziert lesen wie in der Tumblr REST API-Dokumentation notiert:

   $.GET(
     "http://www.tumblr.com/api/likes", 
     { email: "myemail@gmail.com", password: "mypassword" }
   );

Ich überwache Antworten mit Firebug. Status: 200 OK. Antwort: leeren . XML:. kein Element gefunden

die Antwort Tracing Verwendung von:

   $.GET(
     "http://www.tumblr.com/api/likes", 
     { email: "myemail@gmail.com", password: "mypassword" },
     function( data ){ 
        alert( data ); 
     }
   );

zeigt eine leer Alarmmeldung.

ich das gleiche Ergebnis erhalten, egal wo ich den Code aus, es Datei ausführen. ///, localhost (XAMPP), meine eigenen Server oder direkt aus meinem Thema auf mysite.tumblr.com

Bin ich etwas fehlt? Ich konnte erreichen dies mit JavaScript + PHP, cURL usw., aber ich bin auf der Suche nach JavaScript-only-Lösungen.

War es hilfreich?

Lösung

Es klingt für mich wie Sie laufen in die Same Origin Policy . Sie können nicht Ajax zum Laden von Daten aus nur überall dort verwenden, sind Sie zu Laden von Daten aus dem gleichen beschränkt Herkunft wie das Originaldokument (nicht das Skript, das HTML-Dokument).

Unter der Annahme, das ist das Problem, dann:

Wenn sowohl der Browser und Remote-Site-Support CORS und Ihre Herkunft ist akzeptabel die Remote-Site, können Sie diese verwenden. Aber beachten Sie, dass gerade jetzt, nur manche Browser es unterstützen (und IE unterstützt es nur, wenn Sie machen eine JSONP wenn tumblr unterstützt es aber, die jQuery-Unterstützung hat in seinem .get Anruf (nicht wie in Ihren Code-Beispielen .GET).

Eine weitere Option ist Yahoo! Query Language als Cross-Domain-Proxy .

Andere Tipps

Sind Sie sicher, Sie ein 200 bekommen? vielleicht versuchen, diese sicher, dass die Antwort sollte = „Erfolg“ zu sein, wenn alles geht in Ordnung -. soweit ich weiß, die Callback-Funktion unabhängig vom Ergebnis aufgerufen wird,

$.GET(
 "http://www.tumblr.com/api/likes", 
 { email: "myemail@gmail.com", password: "mypassword" },
 function( data, response ){ 
    alert( response ); 
 }

);

Es ist etwas einfach wie ein / am Ende Sie vielleicht sind URL

ich normalerweise Ajax Beiträge wie dieser

$.post(
 "http://www.tumblr.com/api/likes", 
 { email: "myemail@gmail.com", password: "mypassword" },
 function( data, response ){
    if(response == "success")
    {
        //inject data into page
    }
    else
    {
        alert("Ooops something went wrong... please try again.");
    }

 }

);

Und die Dokumentation für $ .get besagt, dass:

Wenn eine Anfrage mit jQuery.get () einen Fehlercode zurückgibt, wird es scheitern still, wenn das Skript auch die globale .ajaxError () -Methode aufgerufen hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top