发送函数回调中的td元素以附加来自ajax调用的数据

时间:2014-12-08 16:52:04

标签: jquery ajax callback promise

我从PHP文件中获取信息并需要将信息附加到TD元素,但是,每当我尝试这样做时,我都无法将td作为参数发送回调处理AJAX调用的成功。

注意td元素实际上是div,其作用类似于表格单元格。因此变量名td

以下是我的代码:

var bookingView = {
    //Creates a set of div elements
    createScheme: function() {
        //--- A lot of loops and if statements excluded here ---

        //The element that the data should be appended to
        var td = $('<div></div>'); 

        //Stores the returned promise
        var promise = bookingController.grabInfo('bookinginfo');

        //Send in the promise as an argument to display the information
        bookingController.displayData(promise);
    }
}

var bookingController = {

    grabInfo: function(filename) {
        //Return a promise
        return $.ajax({
            url : "ajax/" + filename + ".php",
            type: "POST"
        });
    },
    displayData: function(promise) {
        //If the AJAX CALL (or promise) was successful, append the data
        promise.success(function(data) { //Here is where I need to send in the td, but how?
            td.append(data); 
        });
    }
}

这是我尝试应用于自己的代码的解决方案:http://jsfiddle.net/jW68r/ 但是我不能让它工作,因为无论我做什么,当我尝试将它作为参数发送到回调函数时,我需要附加信息的td元素总是未定义的。添加第二个名为element的参数然后编写element.append(data)根本不起作用。我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

我发现将数据发送到回调本身并不起作用,因为回调是由它自己运行的。然而,使用它有效:

displayData: function(element, promise) {
    promise.done(function(data) {
        element.append(data);
    });
}

并且这样称呼它:

bookingController.displayData(td, promise);