带有回调的Javascript类中的jQuery调用问题

时间:2011-03-02 17:04:14

标签: javascript jquery oop callback

我正在使用JavaScript,jQuery和JSONP来进行异步的跨域WCF服务调用。我已经成功地使用了这个功能,所以我知道我遇到的问题不在服务方面。

我设置了测试客户端站点以使用getJSON方法进行内联jQuery调用,并且它运行正常。但是,然后我尝试接受jQuery调用并将它们放入JavaScript类中。现在我无法解决回调问题。

这很好用(工作示例中的函数添加在页面本身的脚本标记中):

function handleResponse(result) {
    if (result.Success) {
        // do something
    }
    else {
        // do something else
    }
}

function validate(serviceURL, data) {
    $.getJSON(serviceURL + "/Validate?data=" + data + "&callbackHandler=?", handleResponse);
}

当我尝试创建一个类以将此功能包装在单独的.js包含文件中时,回调不会触发。以下是.js包含文件的类代码:

function serviceProxy(myServiceURL) {
    this.serviceURL = myServiceURL;

    this.validate = function(data, successCallback, failureCallback) {
        $.getJSON(this.serviceURL + "/Validate?data=" + data + "&callbackHandler=?", function(result) {
            if (result.Success) {
                successCallback();
            }
            else {
                failureCallback(result.ErrorMessage);
            }
        });
    };

以下是直接在页面上用脚本标签编写的JavaScript来进行调用:

function handleSuccess() {
    // do something
}

function handleFailure(message) {
    // do something else
}

function validate(serviceURL, data) {
    var proxy = new serviceProxy(serviceURL);
    proxy.validate(data, handleSuccess, handleFailure);
}

调试时,会执行getJSON调用,但永远不会到达handleSuccess和handleFailure回调。任何建议都将不胜感激。

提前致谢,

1 个答案:

答案 0 :(得分:0)

您是否尝试过更换:

if (result.Success) {
            successCallback();
    }

使用:

if (result.Success) {
            successCallback(result);
    }