Как заменить функцию eval другим методом в ajax? - PullRequest
0 голосов
/ 20 сентября 2018

Я прочитал некоторые материалы, в которых говорится, что eval - это зло, eval можно заменить каким-либо способом.Приведенный ниже фрагмент кода может вызывать api цены акций sinajs. Когда вы набираете тикер какой-либо компании в input, его цена будет отображаться в окне console.log, например, для ввода 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);},

Не удалось.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

console.log (окно ["hq_str_sh" + тикер])

0 голосов
/ 20 сентября 2018

Вы можете проанализировать ответ.

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

Это будет ответ после части var без завершающего символа; разделите его на знак =, и данные станут вторым элементом массива.

...