在ajax成功函数

时间:2017-02-12 00:39:25

标签: javascript jquery ajax

我一直在编写一个工作脚本,并认为通过这样做会非常聪明:

var signRenderer;
    $.ajax({
        type: "POST",
        url: "php/***.php",
        dataType:'json',
        data: { 
            id: photoArray[curImg].id,
        },
        success: function(data, statusText, jqXHR) {
            data = data.data;
            signRenderer = new SignRenderer({
                sign: $('.sign-render'),
                signId: photoArray[curImg].id,
                form: $('.input-form'),
                north: new Sign({
                    id: data.N.id,
                    signId: photoArray[curImg].id,
                    isOn: data.N.visible,
                    disabled: data.N.disabled,
                    position: 'n',
                    direction: data.N.direction,
                    restriction: data.N.restriction,
                    periods: data.N.periods,
                    subtitle: data.N.subtitle,
                    footer: data.N.footer,
                }), ...
        });

问题在于,当我尝试使用north中定义的函数对signRenderer对象执行任何操作时,它告诉我north的所有属性都是{{1 }}

undefined对象代码使用的简短示例:

SignRenderer

function SignRenderer(options) { //Class Variables // ParkingSign Objects var signs = { n: options.north, } console.log(signs.n.getRestriction()); //undefined } 对象(简化):

Sign

我认为正在发生的是function Sign (options) { var restriction = options.restriction; this.getRestriction = function () { return restriction; } } 函数完成后,success对象Sign不再存在,并且因为将对象传递给函数只是传递了引用,所有当我尝试调用north对象中的函数时,值变为undefined。我对这个评估是对的吗?

如果是这种情况,有没有一种简洁的方法来解决这个问题?我真的不希望SignRenderer对象只是作为全局变量而悬空,但如果必须如此,则必须如此。

谢谢你们。

1 个答案:

答案 0 :(得分:0)

问题在于Sign对象,而不是SignRenderer。

function Sign (options) {
this.getRestriction = function () {
    return options.restriction;
}

}