Javascript 未在$.ajax中传递全局js变量
我在.js文件中声明了一个变量server_url,当我在file.js中发出警报时,我可以看到它 问题是当我启动ajax请求时,似乎没有看到server_url的值,它直接进入错误消息。但是,当我用脚本标记硬编码HTML文件中的变量,并从HTML中删除config.js文件的include时,ajax请求可以毫无问题地读取它 有什么解释或帮助吗? 下面是我的代码的大致部分 config.jsJavascript 未在$.ajax中传递全局js变量,javascript,jquery,html,ajax,cordova,Javascript,Jquery,Html,Ajax,Cordova,我在.js文件中声明了一个变量server_url,当我在file.js中发出警报时,我可以看到它 问题是当我启动ajax请求时,似乎没有看到server_url的值,它直接进入错误消息。但是,当我用脚本标记硬编码HTML文件中的变量,并从HTML中删除config.js文件的include时,ajax请求可以毫无问题地读取它 有什么解释或帮助吗? 下面是我的代码的大致部分 config.js var server_url = 'https://url.com'; file.js $('#ap
var server_url = 'https://url.com';
file.js
$('#app_status_account').click(function() {
alert(server_url);
$.ajax({
url: server_url + '/my_web_service',
type: "POST",
data: {
client_phone: $('#client_phone_number').val(),
PIN_code: $('#pass').val()
},
success: function(msg) {
alert(JSON.stringify(msg));
}
error: function(jqXHR, textStatus) {
alert('Request couldn't be done');
}
});
});
index.html(include部分;在关闭body标记之前,我在头部甚至最后尝试了它)
尝试用
window.server_url = 'https://url.com';
听起来,当您声明它时,您并不是在全局范围内执行它。您还可以尝试在声明后立即放置
alert(1)
,然后在执行ajax调用之前,在函数中放置alert(server\u url)
,并确保在ajax函数中看到警报之前的第一个警报。它确实在全局范围内吗?为了确保安全,请删除var
并将其更改为window.server\u url=”https://url.com“
@Lotus91您能更新您的问题并添加您得到的错误吗?^^^这是。很可能不是url出错,而是服务器错误。当url直接位于html文件中时,一切正常。您没有捕获实际错误。将错误处理程序更改为函数(jqXHR,textStatus,error)
,并将下一行更改为警报(error)
然后让我们知道发出了什么警报。声明后的警报和ajax函数前的警报都会毫无问题地显示出来。仍然不工作window.server\u url在声明server\u url后立即发出警报警报(window.server\u url)
您看到了吗?另外,在您的ajax方法中,将全局称为window.server\u url
,而不仅仅是server\u url
,也许此时您的作用域中还有另一个server\u url
变量,我完全按照您刚才所说的做了,仍然是一样的,我用window.server\u url替换了server\u url,ajax函数中的警报显示在声明变量时发出的警报之后?如果在ajax函数中放入setInterval(function(){console.log(window.server\u url)},1000)
并打开控制台,您最终会看到打印出正确的值吗?在我测试时,服务器出现了问题。你从一开始就是对的。谢谢!:)
window.server_url = 'https://url.com';