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

JQuery表单插件-将对象传递给Success函数,jquery,ajax,jquery-forms-plugin,Jquery,Ajax,Jquery Forms Plugin,我使用JQuery表单插件通过Ajax发送表单。我从不同的地方拼凑了代码,除了一件事之外,一切都很完美 成功后PHP处理文件中的数据将输出到(即“message sent”响应)。该的ID当前在函数中设置。我想做的是能够在函数之外设置该ID,这样它就更容易重用,但我一辈子都无法解决如何将该ID传递到函数中。因为: 我无法在success:部分设置任何参数,我只能命名函数 我似乎无法以任何其他方式传递参数,也就是说,我无法向success函数添加额外的参数,即writeOutput(data,di

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

成功后
PHP处理文件中的数据将输出到
(即“message sent”响应)。该
的ID当前在函数中设置。我想做的是能够在函数之外设置该ID,这样它就更容易重用,但我一辈子都无法解决如何将该ID传递到函数中。因为:

  • 我无法在
    success:
    部分设置任何参数,我只能命名函数

  • 我似乎无法以任何其他方式传递参数,也就是说,我无法向success函数添加额外的参数,即
    writeOutput(data,divID)
    ,在别处定义
    divID

  • 以下是相关代码:

    $(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>');
    }
    
    $(formOne).ajaxForm({
    提交之前:函数(){
    返回$(formOne)。验证({
    //验证规则
    }).form();
    },
    beforeSend:function(){
    //在发送操作之前
    },
    成功:writeOutput
    });
    函数writeOutput(数据){
    var$out=$(“#输出”);
    if(typeof data=='object'&&data.nodeType)
    data=elementToString(data.documentElement,true);
    else if(数据类型=='object')
    数据=目标定位(数据);
    $out.append(“”+数据+“”);
    }
    

    那么如何在
    writeOutput()
    函数之外定义ID(当前为#输出)?

    不确定这是否有效,也不是直接答案

    对于“我无法在success:部分设置任何参数”,您可以执行以下操作:

    $(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>');
    }
    
    $(formOne).ajaxForm({
    提交之前:函数(){
    返回$(formOne)。验证({
    //验证规则
    }).form();
    },
    beforeSend:function(){
    //在发送操作之前
    },    
    成功:writeOutput,
    上下文:{extra_arg:'some_value'}
    });
    函数writeOutput(数据){
    var extra\u var\u val=this.extra\u var;//额外参数
    var$out=$(“#输出”);
    if(typeof data=='object'&&data.nodeType)
    data=elementToString(data.documentElement,true);
    else if(数据类型=='object')
    数据=目标定位(数据);
    $out.append(“”+数据+“”);
    }
    
    传递到“context”中的任何内容都将成为回调函数的上下文。希望它能起作用