2

我有多个(100 多个)Javascript 文件,它们使用具有标准功能的通用 js 文件来实质上将 aspx 文件的响应加载到页面上的 DIV 中。但是(这可能非常明显),JQueryload(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通道。它将在之后添加,$("#phone").val()但如果我尝试类似eval(ADDITIONAL_FIELDS)脚本不再有效的内容,则会出现错误。我可能只是将额外的未知变量附加到 url 部分,但其中一些值可能非常大。

这是可能的还是我需要看看另一种方法?

4

1 回答 1

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

如果你没有额外的参数。

于 2013-08-22T18:04:55.760 回答