2013-01-15 54 views
1

我正在使用JQuery表单插件通过Ajax发送表单。我拼凑了来自不同地方的代码,除了一件事以外,一切都很完美。JQuery表格插件 - 将对象传递给成功函数

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

所以,我怎么能定义ID(目前#output)的writeOutput()功能之外?

回答

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

无论传递到'context'成为回调函数的上下文。希望它有效。

+0

完全合作。非常感谢! – padcreative

+0

@padcreative欢迎您.. :) –