2013-08-22 29 views
2

我有多個(100S)使用常見的js文件與標準的功能基本上加載aspx文件的響應到頁面上的DIV的JavaScript文件。然而,(這可能是非常明顯的),JQuery load(URL, data, callback)函數的數據部分有一些設置變量,但我也希望能夠處理傳遞給該函數的未知變量。通行證通過未知變量加載的()

的功能如下(切下來一點,因爲有大量的表單域)

function global_submitform(DIV_ID,ADDITIONAL_FIELDS) 
{ 
    $("#"+DIV_ID).load("functions.aspx?process=processform", 
    { 
    USERID, $("#userid").val(), 
    NAME, $("#name").val(), 
    PHONE, $("#phone").val() 
    }, 
    function(response,status,xhr){if (status=="error"){$(#"+DIV_ID).html(xhr.status+" "+ xhr.statusText);}}); 

也能正常工作的js文件調用它,但我不知道我怎麼能添加過程ADDITIONAL_FIELDS passthough。它將在$("#phone").val()之後添加,但如果我嘗試類似eval(ADDITIONAL_FIELDS)的腳本不再有效,則會收到錯誤。 我可能只是將額外的未知變量追加到url部分,但其中一些值可能非常大。

這是可能的,還是我需要看另一種方式呢?

+0

你試過$ .extend嗎? – jvverde

+0

「ADDITIONAL_FIELDS」是一個對象嗎? –

回答

1

你不顯示你傳遞什麼ADDITIONAL_FIELDS,但我想這是一個哈希值。

我還會打開data參數爲常寫的哈希值。

假設你正在打電話:

global_submitform('thediv', { "foo": 1, "bar": 2 }); 

你要合併那些與 「永久」 的價值觀:

function global_submitform(DIV_ID,ADDITIONAL_FIELDS) 
{ 
    var fields = ADDITIONAL_FIELDS || {}; // maybe nothing was passed 
    $.extend(fields, 
    { 
     USERID: $("#userid").val(), 
     NAME: $("#name").val(), 
     PHONE: $("#phone").val() 
    } 
); 

    // in our example, "fields" now contains the foo, bar, USERID, 
    // NAME and PHONE members 

    $("#"+DIV_ID).load("functions.aspx?process=processform", 
    fields, 
    function(response,status,xhr){if (status=="error"){$(#"+DIV_ID).html(xhr.status+" "+ xhr.statusText);}}); 
} 

請注意,您也可以只要致電:

global_submitform('thediv'); 

如果你沒有額外的參數。