2016-06-30 12 views
0

Ich habe Vorlage Test.html:Yahoo Unerlaubte JSONP Anfrage mit Django

<!DOCTYPE html> 
<html lang="en"> 

<head> 
<meta name = "viewport" content = "width = device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;"> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script> 
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.9.0/build/yahoo/yahoo-min.js"></script> 
</head> 

<body > 

<h1>Stock Quotes AutoSuggest </h1> 
<br><br> 

<input style="width:800px; height:20px;" id="txtTicker" class="x"/> 

<script type="text/javascript"> 
    var YAHOO = { 
     Finance: { 
      SymbolSuggest: {} 
     } 
    }; 
$(".x").autocomplete({ 
source: function (request, response) { 
var query=request.term; 
$.ajax({ 
      type: "GET", 
      url: "http://d.yimg.com/autoc.finance.yahoo.com/autoc", 
      data: {query: query,region:'US',lang:'en-US'}, 
      dataType: "jsonp", 
      jsonp : "callback", 
      jsonpCallback: "YAHOO.Finance.SymbolSuggest.ssCallback", 
     }); 
     // call back function 
     YAHOO.Finance.SymbolSuggest.ssCallback = function (data)  {   
      var suggestions = [];   //alert(JSON.stringify(data.ResultSet.Result));        
      $.each(data.ResultSet.Result, function(i, val) {                 
       suggestions.push(val.symbol+ " "+ val.name); 
      }); 

     response(suggestions); 
     } 
}, 
minLength: 1, 
select: function (event, ui) { 
      //alert(ui.item.value.split("#")[1]); 
      $(this).val(ui.item.value.split(" ")[0]); 
      $("#stockvalue").val(ui.item.name); 
return false; 
}, 
});</script> 

</body> 
</html> 

uses Javascript für Autosuggest Ticker Namen. Nach der Benutzereingabe einige Buchstaben in input field sendet es ajax Anfrage an yahoo finance und sollte das Ergebnis zeigen.

Wenn ich diese html direkt im Browser öffnen - es funktioniert gut und zeigt einige Vorschläge. Aber nachdem ich es in meinem django Projekt verwende, zeigt es nichts.

Mein views.py:

def home(request): 
    return render(request, 'Test.html') 

Was ich in firefox Konsole herausgefunden: 1) Wenn es html direkt öffnen: nach einem Brief in Eingabefeld platzieren JS sendet die Anforderung an YAHOO.Finance (der vollständigen Link für Buchstaben a: http://d.yimg.com/autoc.finance.yahoo.com/autoc?callback=YAHOO.Finance.SymbolSuggest.ssCallback&query=a&region=US&lang=en-US&_=1467262652424) mit Methode GET und es funktioniert gut, wir haben eine Antwort in JSON. 2) Wenn wir Django verwenden, um diese Vorlage zu rendern: Es sendet Anfrage an YAHOO auch (der vollständige Link für den Buchstaben a: http://d.yimg.com/autoc.finance.yahoo.com/autoc?callback=YAHOO.Finance.SymbolSuggest.ssCallback&query=a&region=US&lang=en-US&_=1467263364507), aber der Status ist 400 Bad Request. Innerhalb der Antwort von Yahoo sehe ich das: /**/YAHOO.Finance.SymbolSuggest.ssCallback({"error":{"result":null,"error":{"code":"request-error","description":"Unauthorized JSONP request"}}}); Was könnte falsch sein?

Antwort

1

fand ich Antwort auf meine Frage:

alles, was Sie brauchen, ist dies in den Kopf hinzuzufügen: <meta charset="UTF-8" name="referrer" content="no-referrer">