2013-01-15 57 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歡迎您.. :) –