如何用 ajax 中的其他方法替换 eval 函数?

How can replace the eval function with other method in the ajax?

我读过一些 material ,它说 eval 是邪恶的,eval 可以用一些方法替换。 下面的代码片段可以调用sinajs的股票价格api,当你在input中输入某个公司的代码时,它的价格会显示在console.log的window中,例如输入600020.

 

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) {
            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">
 

如何用以下代码片段的某些方法替换 eval 函数?

success : function(data) {
    sname = eval("hq_str_sh" + ticker);
    console.log(sname);},

这是我的尝试:

success : function(data) {
    window["myTicker"] = "hq_str_sh" + ticker;
    console.log(myTicker);},

失败。

您可以解析响应。

data.substring(4, c.length - 1).split("=")[1];

这将是经过 var 部分但没有尾随 ; 的响应,将其拆分在 = 符号上,数据是数组的第二个元素。

console.log(window["hq_str_sh" + 代码])