2013-08-22 26 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'); 

如果你没有额外的参数。