2013-04-05 114 views
0

我肯定有這個一個簡單的解決方案,但有問題的IM,AJAX網址更新

我有了一個AJAX調用,像這樣一個外部ajax.js文件:

$(function() { 
    $.ajax({ 
     url: url, 
     success: function(data, status) 

的AJAX以上調用我有兩個全局變量稱爲股票和url像這樣:

var ticker = 'AAPL' 
var url = 'http://blahblahblah' + ticker 

在我的HTML文件,我有一個輸入框,在一個股票代碼(如GOOG)的用戶類型和點擊一個按鈕,將ü更新ticker變量,以便使用新的URL再次完成AJAX調用。

<form id="form"> 
      <h3>Enter the ticker symbol of the company you wish to view:</h3> 
      <input type="text" id="userInput"> 
      <button onclick="myFunction()">Try it</button> 
     </form> 

     <script type="text/javascript" src="ajax.js"> 
     <script> 
     function myFunction() 
     { 
       //old value 
       alert(ticker); 

       ticker = document.getElementById('userInput').value; 

       //new value 
       alert(ticker); 
     } 
     </script> 

此代碼更改ticker變量,但AJAX調用仍在使用舊的ticker url執行。我認爲它沒有正確分配?我很新的AJAX,但我無法找到任何解釋這個問題的在線教程。

感謝

回答

0

據我所知,你已經發布的代碼告訴你,你的ajax例程只在頁面加載時被調用,這就解釋了爲什麼只有默認的url/ticker被顯示在結果中。

你需要用ajax的程序在一個函數並調用它的用戶已經輸入的符號後:

在你ajax.js文件:

function getSymbolInfo(ticker) { // consider passing ticker to this function instead of using a global var 
    $.ajax({ 
     url: url + ticker, 
     success: function(data, status) { 
      // show results 
     } 
    }); 
} 

而且從MyFunction的:

function myFunction() 
{ 
    var ticker = document.getElementById('userInput').value; 
    getSymbolInfo(ticker); 

} 
+0

我編輯了我的代碼,以便它以這種格式,但AJAX調用仍未執行。你有什麼建議嗎? http://jsfiddle.net/BPPyz/ – James 2013-04-05 18:05:51

+0

重新調整你的小提琴之後,我得到一個POST請求必須被使用的錯誤,但是在提供了類型爲'post'的ajax例程之後,我得到了同樣的錯誤。也許該網址需要與您使用的網址不同。新jsFiddle:http://jsfiddle.net/TxYNU/ – 2013-04-05 19:22:09

1

字符串是不可變的Javascript,這意味着網址將是恆定的,即使你改變股票。做到這一點,而不是:

$(function() { 
    $.ajax({ 
     url: "http:/blah" + ticker, 
     success: function(data, status) {} 
    }); 
}); 

編輯:現在,我想它,它無關的字符串是不可改變的。做url = "http:/" + ticker不會創建值爲ticker的閉包,它只是創建一個新的字符串值並將其存儲在url中。創建新值後,它不會以任何方式鏈接到ticker

+0

我已經嘗試過你建議的方法,但它仍然不起作用我只是開了一個錯誤。 – James 2013-04-05 18:32:52