2016-10-07 1 views
0

Ich versuche, einen JSONP-Aufruf von einem Dropbox Öffentlichen Ordner aus einer HTML-Seite auf einer anderen Website zu wrangle (daher brauche ich Jsonp, um Cross-Site-Probleme zu vermeiden).Ajax folgt nicht Dropbox Redirect

Mein JavaScript-Code beschwert sich, weil es HTML anstelle von JSON erhält.

$.ajax({ 
     url: "https://www.dropbox.com/s/fzqhnr39fq45ijh/gen_info.json?dl=0", 
     jsonp: "callback", 
     dataType: "jsonp", 

     // Work with the response 
     success: function(response) { 
      console.log(response); // server response 
     } 
    }); 

Wenn ich die genaue URL aus der Firebug-Konsole kopieren und versuchen, dass mit wget ich die richtigen Dateiinhalte zu bekommen. Wie Sie jedoch sehen können, findet eine Weiterleitung statt. der Inhalt der Debug-Fenster legt nahe, dass Ajax versucht, den HTML-Code der ersten URL angezeigt werden und folgende nicht die Umleitung

$wget -O try.txt 'https://www.dropbox.com/s/fzqhnr39fq45ijh/gen_info.json?dl=0&callback=jQuery31100535301754706522_1475816277772&_=1475816277773' 
--2016-10-07 15:35:25-- https://www.dropbox.com/s/fzqhnr39fq45ijh/gen_info.json?dl=0&callback=jQuery31100535301754706522_1475816277772&_=1475816277773 
Resolving www.dropbox.com... 108.160.172.238 
Connecting to www.dropbox.com|108.160.172.238|:443... connected. 
HTTP request sent, awaiting response... 302 Found 
Location: https://dl.dropboxusercontent.com/content_link/OCqme2gZH9FE2dTWU3DATOHjkk3V7PpjPZZAp6N6hK7cztzhiRTflEh27aFDA8bK/file [following] 
--2016-10-07 15:35:26-- https://dl.dropboxusercontent.com/content_link/OCqme2gZH9FE2dTWU3DATOHjkk3V7PpjPZZAp6N6hK7cztzhiRTflEh27aFDA8bK/file 
Resolving dl.dropboxusercontent.com... 45.58.69.5 
Connecting to dl.dropboxusercontent.com|45.58.69.5|:443... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 2698 (2.6K) [text/plain] 
Saving to: `try.txt' 

100%[======================================================================>] 2,698  --.-K/s in 0s 

2016-10-07 15:35:28 (426 MB/s) - `try.txt' saved [2698/2698] 

Ich habe den Rat von dropbox jsonp file und folge den json wie so aber die Ajax-Pre-wrapped Anruf kommt nie auf diese Seite.

callback({"HALLWF1": ["2016/10/07 15:05:00", "Hallett 1 Wind Farm", "SA1", "Wind", "-33.300303", "138.726975", 77.5, 94.5]) 

Gibt es eine Möglichkeit Ajax zu zwingen, die Dropbox umleiten oder sollte ich aufgeben und wählen Sie einen anderen Host für die json zu folgen? Browser ist Firefox 45.2.0, wenn das einen Unterschied macht.

auch in neuester Chrom getestet, da der Fehler

Refused to execute script from 'https://www.dropbox.com/s/fzqhnr39fq45ijh/gen_info.json?dl=0&callback=jQuery311040161567467680626_1475817828807&_=1475817828808' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled. 

Antwort

1

standardmäßig diese www.dropbox.com/s/ Links auf eine HTML-Vorschau Seite zeigen, und nicht der Inhalt der Datei selbst.

Sie können dies ausdrücklich obwohl steuern, die dl oder raw Parametern, wie hier dokumentiert:

https://www.dropbox.com/help/201

Zum Beispiel diese leichte Modifikation des Codes funktioniert:

$.ajax({ 
     url: "https://www.dropbox.com/s/fzqhnr39fq45ijh/gen_info.json?raw=1", 
     jsonp: "callback", 
     dataType: "jsonp", 

     // Work with the response 
     success: function(response) { 
      console.log(response); // server response 
     } 
    }); 
+0

Funktioniert prima aber ich musste 'jsonpCallback:" callback ",' zu meinem Ajax-Aufruf hinzufügen, um "Callback not defined" -Fehler zu vermeiden. Siehe https://api.jquery.com/jQuery.ajax/ – rw950431