将未知变量传递给Load()

时间:2013-08-22 17:55:54

标签: javascript jquery

我有多个(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部分,但是某些值可能非常大。

这是可能的还是我需要考虑另一种方法呢?

1 个答案:

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

如果你没有额外的参数。