JavaScript JSON调用只会加载一次

时间:2018-01-31 23:16:45

标签: javascript html json

我有一个onclick调用searchSymbol(),它在第一次尝试时完全正常。但是,它只能工作一次。为了确保我的警报(tickerSymbol)多次工作,我需要做什么?我正在改变" Ticker"使每个按钮值为textField。

HTML

<input type="text" id="searchTicker" placeholder="Ticker Symbol..." required>
<input type="button" id="searchButton" onclick=searchSymbol() required>
<script type="text/javascript" id="myScript"></script>

的.js

function searchSymbol() {

    var ticker = document.getElementById("searchTicker").value;
    document.getElementById('searchTicker').value='';


    var url="http://ir.stockpr.com/service/quote_jsonp?symbol=";
    var extra="&jsonp=quote_search";
    document.getElementById('myScript').src = url+ticker+extra;

}



function quote_search(json) {

    var tickerSymbol = json.symbol
    alert(tickerSymbol)

}

此提醒仅适用于我第一次点击我的按钮。我不确定我做错了什么。

alert(tickerSymbol)

2 个答案:

答案 0 :(得分:2)

更改脚本标记的src不会使它获取新的src。您必须通过创建一个新的脚本标记以编程方式获取JSONP,如下所示:

function searchSymbol() {

  var ticker = document.getElementById("searchTicker").value;
  document.getElementById('searchTicker').value='';


  var url="https://ir.stockpr.com/service/quote_jsonp?symbol=";
  var extra="&jsonp=quote_search";

  // Remove already existing script tag
  if(document.getElementById('myScript'))
    document.getElementById('myScript').parentNode.removeChild(document.getElementById('myScript'));

  // Create script tag and add it to head
  var script = document.createElement('script');
  script.src = url+ticker+extra;
  script.id = 'myScript';
  document.head.appendChild(script)

}

function quote_search(json) {
  // Check if we get anything in response
  if(json && json.symbol){
    var tickerSymbol = json.symbol
    alert(tickerSymbol)
  }

}

答案 1 :(得分:1)

我认为分配脚本的src不会导致重新加载。您需要创建一个新的脚本标记。

function searchSymbol() {

    var ticker = document.getElementById("searchTicker").value;
    document.getElementById('searchTicker').value='';

    var url="http://ir.stockpr.com/service/quote_jsonp?symbol=";
    var extra="&jsonp=quote_search";
    var newscript = document.createElement("script");
    newscript.src = url+ticker+extra;
    document.head.appendChild(newscript);

}