2013-04-05 73 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