首页 > 解决方案 > Javascript数组推送不向已定义的数组添加值

问题描述

对不起这个幼稚的问题,我被困在这里
我从服务器加载我的过滤器数组

var filters=["Color","Size","Quantity","Ram","Weight","Genre","Stock","Buypacks"];

现在这是我添加新过滤器时的功能,我的目标是在上面的数组中添加新的过滤器值:

function addfilter() {
  var formData = new FormData($("#myform2")[0]);
  var adfilter = $('#filter').val();

  var xhr = new XMLHttpRequest();


  xhr.open('POST', 'performfilterserver.php', true);


  xhr.onload = function() {
    if (xhr.status === 200) {

      alert(xhr.responseText);
      if (xhr.responseText.trim() == "filter added") {

        if (!(filters.includes(adfilter))) {
          filters.push(adfilter); //this never works
          $('#filter').val("");
        }

      }
    } else {
      alert('An error occurred!');
    }
  };

  // Send data
  xhr.send(formData);
}

下面是对应的html:

<form id="myform2" method="post" enctype="multipart/form-data">
  <div class="add_filters">

    </select>
    <label style="font-size:20px;"><b>Add filters:</b></label>
    <input type="text" name="filter" id="filter" placeholder="Enter Here" style="border-style:solid;height:30px;" />
    <label>Is this only required once while uploading?</label>
    <input name="imagetf" type="checkbox" value="image" />
    <button name="add_filter" type="button" onclick="addfilter()">ADD filter</button>
    </br>
    </br>
  </div>
</form>

任何帮助将不胜感激

编辑:我通过其他功能在选项中显示过滤器值,但它显示了原始数组:

$.each(filters, function(key, value) {
  var $option = $("<option/>", {
    value: value,
    text: value
  });
  $sel.append($option);
});

标签: javascript

解决方案


推荐阅读