AJAX URL更新

时间:2013-04-05 16:01:13

标签: javascript html ajax jquery

我确定有一个简单的解决方案,但我有问题,

我有一个外部的ajax.js文件,它有一个像这样的AJAX调用:

$(function() {
    $.ajax({
        url: url,
        success: function( data, status )
在AJAX调用之上

我有两个全局变量叫做ticker和url,如下所示:

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

在我的HTML文件中,我有一个输入框,用户输入一个自动收报机代码(例如GOOG)并点击一个按钮来更新自动收报机变量,以便使用新的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变量,但仍在使用旧的ticker url执行AJAX调用。我认为它没有正确分配?我是AJAX的新手,但我找不到任何解释这个问题的在线教程。

谢谢

2 个答案:

答案 0 :(得分:1)

字符串在Javascript中是不可变的,这意味着即使您更改自动收报机,网址也将保持不变。这样做:

$(function() {
    $.ajax({
        url: "http:/blah" + ticker,
        success: function(data, status) {}
    });
});
编辑:现在我考虑一下,它与字符串是不可变的无关。执行url = "http:/" + ticker不会创建值为ticker的闭包,它只是创建一个新的字符串值并将其存储在url中。创建新值后,它不会以任何方式链接到ticker

答案 1 :(得分: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);

}