JQuery表单插件 - 将对象传递给成功函数

时间:2013-01-15 11:13:02

标签: jquery ajax jquery-forms-plugin

我正在使用JQuery Form插件通过Ajax发送表单。我拼凑了来自不同地方的代码,一切都很完美,除了一件事。

success时,来自PHP处理文件的数据被输出到<div>(即“消息发送”响应)。当前在函数中设置了<div>的ID。我想要做的是能够在函数之外设置该ID,以便更容易重复使用,但我不能在我的生活中找出如何将该ID传递给函数。这是因为:

  1. 我无法在success:部分设置任何参数,我只能命名该功能。

  2. 我似乎无法以任何其他方式传递参数,即我无法在成功函数中添加额外的参数,即writeOutput(data,divID),在其他地方定义divID。 / p>

  3. 以下是相关代码:

    $(formOne).ajaxForm({
        beforeSubmit: function() {
            return $(formOne).validate({
                // validation rules
            }).form();
        },
        beforeSend: function() {
            // beforeSend actions
        },
        success: writeOutput
    });
    
    function writeOutput(data) {
    
        var $out = $('#output');
    
        if (typeof data == 'object' && data.nodeType)
            data = elementToString(data.documentElement, true);
        else if (typeof data == 'object')
            data = objToString(data);
    
        $out.append('<div>'+ data +'</div>');
    }
    

    那么我怎样才能在writeOutput()函数之外定义ID(目前是#output)?

1 个答案:

答案 0 :(得分:0)

不确定这是否有效,而不是直接回答,

对于&#34;我不能在成功中设置任何参数:部分&#34;,你可以这样做:

$(formOne).ajaxForm({
    beforeSubmit: function() {
        return $(formOne).validate({
            // validation rules
        }).form();
    },
    beforeSend: function() {
        // beforeSend actions
    },    
    success: writeOutput,
    context: { extra_arg: 'some_value' }
});

function writeOutput(data) {
    var extra_var_val = this.extra_var; //the extra argument
    var $out = $('#output');

    if (typeof data == 'object' && data.nodeType)
        data = elementToString(data.documentElement, true);
    else if (typeof data == 'object')
        data = objToString(data);

    $out.append('<div>'+ data +'</div>');
}

无论进入&#39;背景&#39;成为回调函数的上下文。希望它有效。