我有多个(100s)Javascript文件,它们使用带有标准函数的公共js文件,实质上将aspx文件的响应加载到页面上的DIV中。
然而(这可能是非常明显的),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 :(得分: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');
如果你没有额外的参数。