Javascript AJAX URL更新
我相信有一个简单的解决办法,但我有问题 我有一个外部ajax.js文件,其中包含如下ajax调用: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
$(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:我已经尝试了您建议的方法,但仍然不起作用,我只是遇到了一个错误。