Javascript AJAX URL更新

Javascript AJAX URL更新,javascript,html,ajax,jquery,Javascript,Html,Ajax,Jquery,我相信有一个简单的解决办法,但我有问题 我有一个外部ajax.js文件,其中包含如下ajax调用: $(function() { $.ajax({ url: url, success: function( data, status ) var ticker = 'AAPL' var url = 'http://blahblahblah' + ticker 在AJAX调用上面,我有两个全局变量,分别称为ticker和url,如下所示: $(funct

我相信有一个简单的解决办法,但我有问题

我有一个外部ajax.js文件,其中包含如下ajax调用:

$(function() {
    $.ajax({
        url: url,
        success: function( data, status )
 var ticker = 'AAPL'
 var url = 'http://blahblahblah' + ticker
在AJAX调用上面,我有两个全局变量,分别称为ticker和url,如下所示:

$(function() {
    $.ajax({
        url: url,
        success: function( data, status )
 var ticker = 'AAPL'
 var url = 'http://blahblahblah' + ticker
在我的HTML文件中,我得到了一个输入框,用户在其中键入一个ticker符号(例如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>

输入要查看的公司的股票代码:
试试看
函数myFunction()
{
//旧价值
警报(股票代码);
ticker=document.getElementById('userInput')。值;
//新价值
警报(股票代码);
}
这段代码更改了ticker变量,但AJAX调用仍在使用旧的ticker url执行。我认为它没有被正确分配?我对AJAX非常陌生,但我在网上找不到任何解释这个问题的教程


谢谢

字符串在Javascript中是不可变的,这意味着url将保持不变,即使您更改了ticker。改为这样做:

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

编辑:现在我想起来了,它与字符串不可变无关。执行
url=“http:/”+ticker
不会创建值为
ticker
的闭包,它只是创建一个新字符串值并将其存储在
url
中。创建新值后,它不会以任何方式链接到
ticker

从您发布的代码中可以看出,只有在加载页面时才会调用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);

}

我已经对代码进行了编辑,使其采用这种格式,但仍然没有执行AJAX调用。你有什么建议吗?在对您的提琴做了一些修改之后,我得到一个错误,必须使用POST请求,但是在为ajax例程提供“POST”类型之后,我得到了相同的错误。可能url需要与您使用的url不同。新的JSFIDLE:我已经尝试了您建议的方法,但仍然不起作用,我只是遇到了一个错误。