我有模板Test.html
:
<!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>
Javascript 用于自动建议股票名称。用户在输入字段
中输入一些字母后,它会向yahoo Finance
发送ajax
请求并应显示结果。
如果我直接在浏览器中打开此 html
- 它工作正常并显示一些建议。但当我在我的 django 项目中使用它后,它什么也没显示。
我的views.py
:
def home(request):
return render(request, 'Test.html')
我在 Firefox 控制台中发现了什么:
1)如果我直接打开html
:
在输入字段中输入字母后,JS 向 YAHOO.Finance
发送请求(字母 a
的完整链接:http://d.yimg.com/autoc .finance.yahoo.com/autoc?callback=YAHOO.Finance.SymbolSuggest.ssCallback&query=a®ion=US&lang=en-US&_=1467262652424
) 使用方法 GET
并且运行良好,我们有json 格式的答案。
2) 如果我们使用 Django 来渲染这个模板:
它也向 YAHOO 发送请求(字母 a
的完整链接:http://d.yimg.com/autoc.finance.yahoo.com/autoc?callback=YAHOO.Finance。 SymbolSuggest.ssCallback&query=a®ion=US&lang=en-US&_=1467263364507
),但状态为 400 错误请求
。在雅虎的答案中我看到了这个: /**/YAHOO.Finance.SymbolSuggest.ssCallback({"error":{"result":null,"error":{"code":"request-error","description":"未经授权的 JSONP 请求"}}});
可能出了什么问题?
最佳答案
我找到了问题的答案:
您所需要的只是将其添加到头部:
<meta charset="UTF-8" name="referrer" content="no-referrer">
关于javascript - Yahoo 未经授权的 JSONP 请求与 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38115331/