rid*_*n88 2 javascript jquery global-variables
我以为我把这个烂摊子整理在我脑海中,但由于一些奇怪的原因它不能正常工作.
如果在函数/作用域之外声明一个变量并在函数内部没有var的情况下引用它,那么它会改变先前声明的变量......对吗?
但是,第一个警报返回正确的价格,但第二个(最后一个)警报返回0.我做错了什么?
//get pricing
var price=0;
var modelid = $("#model_input").val();
var inCode = $("#code_input").val();
$.get("getpricing.php", { 'modelid': modelid ,'code' : inCode }, function(data){
price = data;
alert(price);
});
alert(price);
Run Code Online (Sandbox Code Playgroud)
您正在使用A jax请求.
那些未指定的 unkess 是A同步的:它们在后台执行,而不会停止执行脚本的其余部分.
因此,alert最后一行代码在Ajax请求完成之前执行; 这意味着price当时仍为0.
改变的一种方法是使用同步请求(参见async选项); 但我强烈建议不要这样做; 引用文档:
默认情况下,所有请求都是异步发送的(默认情况下设置为true).如果需要同步请求,请将此选项设置为false.请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作.
而你肯定不希望你的应用程序冻结整个浏览器!
您应该重新考虑应用程序的设计方式,在这种情况下:您只能在Ajax请求完成后使用"价格"信息 - 这可能意味着您应该在成功调用函数中放置更多代码:just放置代码后$.get是不够的.