为什么在调用js API时无法在console.log的窗口中显示响应?

时间:2018-09-19 15:08:24

标签: jquery ajax api

这是调用股票价格的简单API。

http://hq.sinajs.cn/list=sh 

sh的末尾添加股票代码。在浏览器中键入http://hq.sinajs.cn/list=sh600020,一个包含股票价格的长字符串作为对http://hq.sinajs.cn/list=sh600020的响应。

var hq_str_sh600020="中原高速,3.530,3.530,3.560,3.590,3.520,3.560,3.570,4517058,16087830.000,169746,3.560,114392,3.550,108100,3.540,153300,3.530,100000,3.520,129998,3.570,241810,3.580,346700,3.590,223900,3.600,148900,3.610,2018-09-19,15:00:00,00";

我想用ajax调用js api。

 
function stock(){
    ticker = $("#code").val();
    $.ajax({
        type : "GET",
        url : "http://hq.sinajs.cn/list=sh" + ticker,
        dataType : "script",
        cache : "false",
        timeout : 2000,
        success : function(data) {console.log(data);},
        error : function() {alert("wrong");}
    });
}
 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    tiker:
    <input id="code" type="text" size="10">
    <input id="Search" type="button" onclick="stock()" value="query">
 

当您在代码中输入600020并单击query时,没有任何wrong信息,也许我对http://hq.sinajs.cn/list=sh600020的呼叫处于良好状态。
包含股票价格信息的长字符串无法显示在控制台中,undefined的窗口中console.log 如何在http://hq.sinajs.cn/list=sh600020的窗口中显示console.log的响应的长字符串?

2 个答案:

答案 0 :(得分:0)

因为您使用的是dataType: "script",所以.ajax()会将响应解析为javascript并执行。

这是回应...

  

var hq_str_sh600020 =“中原高速,3.530,3.530,3.560,3.590,3.520,3.560,3.570,4517058,16087830.000,169746,3.560,114392,3.550,108100,3.540,153300,3.530,100000,3.520,129998, 3.570,241810,3.580,346700,3.590,223900,3.600,148900,3.610,2018-09-19,15:00:00,00“;

执行后,此脚本将创建一个名为hq_str_sh600020的全局变量;该变量就是您应该使用的变量。

您的成功回调将变为:

success : function(data) {console.log(hq_str_sh600020);}

示例:

 
function stock(){
    ticker = $("#code").val();
    $.ajax({
        type : "GET",
        url : "http://hq.sinajs.cn/list=sh" + ticker,
        dataType : "script",
        cache : "false",
        timeout : 2000,
        success : function(data) {console.log(hq_str_sh600020);},
        error : function() {alert("wrong");}
    });
}
 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    tiker:
    <input id="code" type="text" size="10" value="600020">
    <input id="Search" type="button" onclick="stock()" value="query">
 

.ajax() dataType: script的文档说明了……

  

将响应评估为JavaScript并以纯文本形式返回

我不知道您的代码为什么不记录脚本的纯文本版本。也许其他人可以提供答案。

答案 1 :(得分:0)

代码是一个变量,您可以在input中输入不同的数字,其ID为code,这意味着您搜索的公司股票价格不同。
console.log(hq_str_sh600020)表示您只能搜索指定的公司。

 
function stock(){
    var ticker = $("#code").val();
    $.ajax({
        type : "GET",
        url : "http://hq.sinajs.cn/list=sh" + ticker,
        dataType : "script",
        cache : "false",
        timeout : 2000,
        success : function(data) {
            var sname = eval("hq_str_sh" + ticker);
            console.log(sname);},
        error : function() {alert("wrong");}
    });
}
 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    tiker:
    <input id="code" type="text" size="10">
    <input id="Search" type="button" onclick="stock()" value="query">