JavaScript JSON调用将只加载一次

JavaScript JSON调用将只加载一次,javascript,html,json,Javascript,Html,Json,我有一个onclick调用searchSymbol(),它在第一次尝试时工作得非常好。然而,它只工作一次。我需要做什么才能确保我的警报(tickerSymbol)多次正常工作?我正在更改每个按钮的“Ticker”值单击文本字段 HTML <input type="text" id="searchTicker" placeholder="Ticker Symbol..." required> <input type="button" id="searchButton" oncli

我有一个onclick调用searchSymbol(),它在第一次尝试时工作得非常好。然而,它只工作一次。我需要做什么才能确保我的警报(tickerSymbol)多次正常工作?我正在更改每个按钮的“Ticker”值单击文本字段

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>
此警报仅在第一次单击“我的”按钮时有效。我不确定我做错了什么

alert(tickerSymbol)

我认为分配脚本的
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);

}

更改脚本标记的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)
  }

}

您正在将
src
更改为相同的值,因此不会发生任何事情。每次单击时,我都会更新“Ticker”。所以它不是相同的值。myScript是一个script标记()吗?更新了post,就像SLaks说的,你没有更新ticker的值。你想在其中添加
+1
吗?不确定删除旧的
元素是否有任何真正的好处,但我确信它不会有任何伤害。检查“json.symbol”值的嵌套方法是什么?不检索任何内容?@husharoonie要检查json API是否返回任何值,最好使用AJAX(XMLHttpRequest)相反,我该怎么做呢?别介意我的最后一句话,看到的是您正在处理的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)
  }

}