1

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

success来自 PHP 处理文件的数据被输出到一个<div>(即“消息发送”响应)。<div>当前在函数中设置的 ID 。我想要做的是能够在函数之外设置该 ID,以便它更容易重用,但我无法终生弄清楚如何将该 ID 传递到函数中。因为:

  1. 我不能在该success:部分中设置任何参数,我只能命名该函数。

  2. 我似乎无法以任何其他方式传递参数,即我无法向成功函数添加额外的参数,即在其他地方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>');
}

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

4

1 回答 1

0

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

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

$(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>');
}

传入“上下文”的任何内容都将成为回调函数的上下文。希望它有效。

于 2013-01-15T11:36:00.773 回答