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®ion=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®ion=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?