javascript - Yahoo 未经授权的 JSONP 请求与 Django

标签 javascript django yahoo-finance

我有模板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/

相关文章:

django - Apache | Django : How to run websites on the back of a base URL?

csv - 从雅虎财经下载 CSV 格式的报价 - Beta 符号?

YQL 不从 Assets 负债表或损益表返回数据

django - 主管 Django Gunicorn Gevent 内存使用

python - 如何在 Django 模型查询中从 mysql 数据库中获取日期时间作为字符串

javascript - 使用 jQuery 更改滚动时的背景附件属性

PHP 防止直接访问

ios - ICU 正则表达式文本匹配在 iOS 应用程序的工作流中工作

javascript - 在 Typescript 中,有什么方法可以将类写成数组,这样我就可以像 C# 中的 List<T> 那样做 class[i]

javascript - 遍历嵌套的 JavaScript 对象