在Jquery中创建变量global的值

时间:2016-03-04 11:05:42

标签: jquery

我有一个表单,您可以在其中输入数据并将数据保存到数据库中。如果您愿意,可以添加更多这些表单集,并且通过使用id_count设置每个输入框来实现此功能。我通过Jquery和附加额外的表单来完成所有这些。所有这些表格都在一个表格标签下。所以当有人添加额外的表单时,它看起来像这样:

<form>
   <div class="fieldsetOriginal">
   </div>
   <div class="fieldset_1>
   </div>
   <div class="fieldset_2">
   </div>
</form>

目前我从数据库中获取一组值并使用PHP将它们发送到Jquery,然后通过执行以下操作获取数据:

success: function(data) {
  if (data['error']) {
    alert(data['error']);
  } else {
    var response = JSON.parse(data);
    var x;
    var id_count = response.length;
    for (x = 0; x < response.length; ++x) {
      var my_obj = response[x];
      console.log(my_obj.name);
      console.log(my_obj.gender);
      console.log(my_obj.date);
      console.log(my_obj.relationship);
      $j('#name1').val(my_obj.name);
      alert(id_count);

      id_count++;
    }

  }
},

在Jquery中,我也在页面的开头设置var id_count = 1;,因此变量是全局的。我使用$j的原因是因为我在Magento中使用$j = $.noConflict();,你必须在noConflict模式下使用Jquery。

但问题是我在ajax函数中设置的id_count的值不是全局的。这很重要,因为如果id_count在某个地方是一件事而在另一个地方,那么我可能会得到相互冲突的身份。我如何设置我在ajax函数中为id_count设置的值,当我附加表单时,它的主要值。我怎么能这样做?

很抱歉,如果这篇文章很长或者这是一个愚蠢的问题。

2 个答案:

答案 0 :(得分:0)

在表单中创建一个input元素,并将count变量赋值给隐藏字段。

<input type="hidden" value="" id="hdnCount"/> //Element Creation


success: function(data) {
  if (data['error']) {
    alert(data['error']);
  } else {
    var response = JSON.parse(data);
    var x;
    var id_count = response.length;
    for (x = 0; x < response.length; ++x) {
      var my_obj = response[x];
      console.log(my_obj.name);
      console.log(my_obj.gender);
      console.log(my_obj.date);
      console.log(my_obj.relationship);
      $j('#name1').val(my_obj.name);
      alert(id_count);

      id_count++;
    }
$('input#hdnCount').val(id_count);
  }
},

另一种方式

<form>
   <div class="fieldsetOriginal" data-count=""> //add Data Attribute
   </div>
   <div class="fieldset_1>
   </div>
   <div class="fieldset_2">
   </div>
</form>

success: function(data) {
  if (data['error']) {
    alert(data['error']);
  } else {
    var response = JSON.parse(data);
    var x;
    var id_count = response.length;
    for (x = 0; x < response.length; ++x) {
      var my_obj = response[x];
      console.log(my_obj.name);
      console.log(my_obj.gender);
      console.log(my_obj.date);
      console.log(my_obj.relationship);
      $j('#name1').val(my_obj.name);
      alert(id_count);

      id_count++;
    }
$('.fieldsetOriginal').data('count',id_count); //Assign value in data Attr
  }
},

要访问数据属性值:

var $val= $('.fieldsetOriginal').data('count'); 

答案 1 :(得分:0)

你知道吗,我自己解决了!

我所做的就是从我在函数中声明var时删除id_count。我还删除了文档开头的var id_count = 1;。这解决了我的问题,使count_id全局化了!