带有jQuery和JSON的Javascript类

带有jQuery和JSON的Javascript类,javascript,jquery,json,class,Javascript,Jquery,Json,Class,我正在创建一个我想在javascript上用作类的函数。 我的函数将使用php parse JSON调用JSON页面create,并设置变量,但它不起作用。 你能给我一些提示吗? 以下是代码,请提前发送thx: function SiteParams(){ $.getJSON("parse/parametri.php",function(data){ $.each(data,function(index,value){ this.NomeSito

我正在创建一个我想在javascript上用作类的函数。 我的函数将使用php parse JSON调用JSON页面create,并设置变量,但它不起作用。 你能给我一些提示吗? 以下是代码,请提前发送thx:

function SiteParams(){
    $.getJSON("parse/parametri.php",function(data){
        $.each(data,function(index,value){
            this.NomeSito = value.nomesito;
            this.URLSito = value.urlsito;
            this.EmailAutore = value.email;
            this.NomeAutore = value.nomeautore;
        });
    });
}
var website = new SiteParams();
function ModuleBase(){
    $("<div/>",{id:"title", text:website.NomeSito}).appendTo("#main");
}
函数SiteParams(){
$.getJSON(“parse/parametri.php”,函数(数据){
$.each(数据、函数(索引、值){
this.NomeSito=value.NomeSito;
this.URLSito=value.URLSito;
this.EmailAutore=value.email;
this.NomeAutore=value.NomeAutore;
});
});
}
var website=new SiteParams();
函数ModuleBase(){
$(“”,{id:“title”,text:website.NomeSito});
}

您在
$的回调中有错误的
。每个
(以及
getJSON的回调
)。试试看:

function SiteParams(){
    var that = this;
    $.getJSON("parse/parametri.php",function(data){
        $.each(data,function(index,value){
            that.NomeSito = value.nomesito;
            that.URLSito = value.urlsito;
            that.EmailAutore = value.email;
            that.NomeAutore = value.nomeautore;
        });
    });
}
请注意,如果您的响应只包含一个对象,则循环使用
每个
没有多大意义。如果它包含多个对象,每个对象都会覆盖上一个对象。因此,如果您的响应实际上是一个包含单个项的数组,则可以简单地使用以下方法:

function SiteParams(){
    var that = this;
    $.getJSON("parse/parametri.php",function(data){
        that.NomeSito = data[0].nomesito;
        that.URLSito = data[0].urlsito;
        that.EmailAutore = data[0].email;
        that.NomeAutore = data[0].nomeautore;
    });
}

您在对
$的回调中有错误的
this
。每个
(以及对
getJSON
的回调)。试试看

function SiteParams(){
    var that = this;
    $.getJSON("parse/parametri.php",function(data){
        $.each(data,function(index,value){
            that.NomeSito = value.nomesito;
            that.URLSito = value.urlsito;
            that.EmailAutore = value.email;
            that.NomeAutore = value.nomeautore;
        });
    });
}
请注意,如果您的响应只包含一个对象,则循环使用
每个
没有多大意义。如果它包含多个对象,每个对象都会覆盖上一个对象。因此,如果您的响应实际上是一个包含单个项的数组,则可以简单地使用以下方法:

function SiteParams(){
    var that = this;
    $.getJSON("parse/parametri.php",function(data){
        that.NomeSito = data[0].nomesito;
        that.URLSito = data[0].urlsito;
        that.EmailAutore = data[0].email;
        that.NomeAutore = data[0].nomeautore;
    });
}

getJSON是异步的,因此需要传递回调函数。试试这个:

function SiteParams(cb){
    $.getJSON("parse/parametri.php",function(data){
        $.each(data,function(index,value){
            this.NomeSito = value.nomesito;
            this.URLSito = value.urlsito;
            this.EmailAutore = value.email;
            this.NomeAutore = value.nomeautore;
            cb(this);
        });
    });
}
new SiteParams(ModuleBase);
function ModuleBase(website){
    $("<div/>",{id:"title", text:website.NomeSito}).appendTo("#main");
}
函数SiteParams(cb){
$.getJSON(“parse/parametri.php”,函数(数据){
$.each(数据、函数(索引、值){
this.NomeSito=value.NomeSito;
this.URLSito=value.URLSito;
this.EmailAutore=value.email;
this.NomeAutore=value.NomeAutore;
cb(本);
});
});
}
新SiteParams(ModuleBase);
功能模块库(网站){
$(“”,{id:“title”,text:website.NomeSito});
}

getJSON是异步的,因此需要传递回调函数。试试这个:

function SiteParams(cb){
    $.getJSON("parse/parametri.php",function(data){
        $.each(data,function(index,value){
            this.NomeSito = value.nomesito;
            this.URLSito = value.urlsito;
            this.EmailAutore = value.email;
            this.NomeAutore = value.nomeautore;
            cb(this);
        });
    });
}
new SiteParams(ModuleBase);
function ModuleBase(website){
    $("<div/>",{id:"title", text:website.NomeSito}).appendTo("#main");
}
函数SiteParams(cb){
$.getJSON(“parse/parametri.php”,函数(数据){
$.each(数据、函数(索引、值){
this.NomeSito=value.NomeSito;
this.URLSito=value.URLSito;
this.EmailAutore=value.email;
this.NomeAutore=value.NomeAutore;
cb(本);
});
});
}
新SiteParams(ModuleBase);
功能模块库(网站){
$(“”,{id:“title”,text:website.NomeSito});
}

这是个好地方

函数SiteParams(){
//创建一个私有延迟,并公开承诺:
var d=新的$.Deferred();
this.load=d.promise();
var=这个;
$.getJSON(“parse/parametri.php”,函数(数据){
//您的$。每个都只使用了一个值
var值=数据[0];
//将数据复制到
那.NomeSito=value.NomeSito;
that.URLSito=value.URLSito;
that.EmailAutore=value.email;
即.NomeAutore=value.NomeAutore;
//兑现诺言
d、 解决();
});
}
var s=新的SiteParams();
s、 load.done(函数(){
$(“”,{id:“title”,text:s.NomeSito});
});

这是个好地方

函数SiteParams(){
//创建一个私有延迟,并公开承诺:
var d=新的$.Deferred();
this.load=d.promise();
var=这个;
$.getJSON(“parse/parametri.php”,函数(数据){
//您的$。每个都只使用了一个值
var值=数据[0];
//将数据复制到
那.NomeSito=value.NomeSito;
that.URLSito=value.URLSito;
that.EmailAutore=value.email;
即.NomeAutore=value.NomeAutore;
//兑现诺言
d、 解决();
});
}
var s=新的SiteParams();
s、 load.done(函数(){
$(“”,{id:“title”,text:s.NomeSito});
});

这是完美的工作方式,从来没有想过回调函数我对此有点陌生:)注意这里的
value==这可能很好,很高兴我能帮上忙!另一个回复与这个回复结合起来也很有意义——您应该使用不同的“this”对象,否则您可能会将这些额外属性放在全局(“窗口”)对象上。它会起作用,但最好封装起来。请参阅“var that=this”模式。同意,如果它只是一个函数(而不是用“new”调用它),则更有意义。然后将值存储在其他变量(不是“this”)上,并将其传递到回调中。这是一个完美的工作方式,从未考虑过回调函数我对此有点陌生:)请注意这里的
value==this
,这可能很好,很高兴我能提供帮助!另一个回复与这个回复结合起来也很有意义——您应该使用不同的“this”对象,否则您可能会将这些额外属性放在全局(“窗口”)对象上。它会起作用,但最好封装起来。请参阅“var that=this”模式。同意,如果它只是一个函数(而不是用“new”调用它),则更有意义。然后将值存储在其他变量(不是“this”)上,并将其传递到回调中。虽然与问题无关,但您的数据结构很奇怪-
this.sito.nome
this.NomeSito
更有意义
parse/parametri.php
返回什么?你能举个例子吗?为什么要迭代
数据
?您只会得到最后一个结果虽然与问题无关,但您的数据结构很奇怪-
this.sito.nome
this.NomeSito
更有意义
parse/parametri.php
retu