如有一个menu类
function Menus()
{
this.language = null;
this.parentid = 0;
this.source = null;
}
Menus.prototype.getSource = function(){
$.ajax({
type: "POST",
url: "codebase/menusource.asp",
data: "language="+this.language+"&parentid="+this.parentid,
success: function(msg){
var source = eval(msg)
//在这里要怎么做 才能把 source 赋值给 Menus.source
//也许大家会使用 new 一个全局的实例 M1,再把 source 赋值给 M1.source;
//如果不这样用有其他方法吗?
}
});
}
function Menus()
{
this.language = null;
this.parentid = 0;
this.source = null;
}
Menus.prototype.getSource = function(){
$.ajax({
type: "POST",
url: "codebase/menusource.asp",
data: "language="+this.language+"&parentid="+this.parentid,
success: function(msg){
var source = eval(msg)
//在这里要怎么做 才能把 source 赋值给 Menus.source
//也许大家会使用 new 一个全局的实例 M1,再把 source 赋值给 M1.source;
//如果不这样用有其他方法吗?
}
});
}
是属于对象Menus的属性
不是属于其对象的属性
直接写就行了吧
Menus.source = source;
this.language = null;
this.parentid = 0;
this.source = null;
}
Menus.prototype.getSource = function(){
var obj = this;
$.ajax({
type: "POST",
url: "codebase/menusource.asp",
data: "language="+this.language+"&parentid="+this.parentid,
success: function(msg){
var source = eval(msg);
obj.source = source;
}
});
}
//按照1楼的方法直接把返回值赋值给 Menus.source = source;
//然后按照下面的测试了下,*.source 的值还是没有更新到。
var m1 = new Menus()
m1.getSource()
alert(m1.source) ;
var m1 = new Menus()
m1.getSource()
alert(m1.source) ; // 值还是NULL ,没有更新到
function Menus()
{
this.language = null;
this.parentid = 0;
this.source = null;
}
Menus.prototype.getSource = function(){
var obj = this;
obj.source = "aaa";
}var s = new Menus();s.getSource();document.write(s.source); // 显示 aaa; 你用ajax,因为是异步,在得到数据之前,还是null, 我个认认为你应该加: async: false, 禁用异步, 再试。
</script>
禁用异步后 可以 等到新值了。
我想确认个问题
var s = new Menus();
s.getSource();
---- code ---
禁用异步后 ,程序是否 会在s.getSource();执行完毕后,才继续执行 s.getSource(); 后面的代码?
s.getSource(); //不禁用异步时,它会直接或同步先运行下一句。因此,下一句显示null. 如果禁用异步,这句将在执行完,得到错误,或正确数据后,才继续一下句。document.write(s.source);