【问题标题】:remove quotation marks from jquery array从jQuery数组中删除引号
【发布时间】:2020-02-29 03:11:32
【问题描述】:

在我的函数中,我使用 jquery 搜索 owl carousel 的所有项目,并从 id 中仅获取可用的数字。因为我只需要物品的ID号。我通过 ajax 将 ID 号发送到我的 php 控制器以进行进一步处理。

var slideArray = $('#categoryInterestCarousel_' + categoryIdOld).find('.interestOwl');

//Step 1: initialize the array
var previewIds = [];

//Step 2: Search for all IDs and add only the id to the array
$(function() {
  $(slideArray).each(function(index) {
    previewIds[index] = $(this).attr('id').replace(/\D/g, '');
  });
});

作为输出,我得到以下数组:

array:3 [
  0 => "183"
  1 => "198"
  2 => "201"
]

我需要不带引号的数组,它看起来像:

array:3 [
  0 => 183
  1 => 198
  2 => 201
]

通过ajax发送数据:

$.ajax({
  type: 'GET',
  url: '/categorie/owl/' + categoryIdOld,
  data: {
    previewIds: previewIds
  },
  success: function(data) {
    //add some data to view
  },
  error: function(xhqr, staus, message) {
    var response = JSON.parse(xhqr.responseText);
    var errors = response.errors;
    for (var error_key in errors) {
      var error = errors[error_key];
      _toastr_new(error, "top-full-width", "error", false, '.toastr-notify', 0);
    }
  }
});

在控制器上获取数据:

public function ajaxOwlItems(Request $request, $id) {
  $preview_id = $request->previewIds;
  dd($request->previewIds);
}

我的错误在哪里?如何去掉引号?

【问题讨论】:

  • 您真正要问的是如何将字符串转换为数字,从而在网络搜索中显示大量结果

标签: php jquery arrays laravel replace


【解决方案1】:

像这样 - 你需要将字符串转换为数字 - 我使用 +

我也冒昧地简化了代码——例如不需要使用$(slideArray),因为它已经是一个 jQuery 集合。

let categoryIdOld =3;
const previewIds = $('#categoryInterestCarousel_' + categoryIdOld)
 .find('.interestOwl')
 .map(function() { return +this.id.replace(/\D/g, ''); })
 .get();

console.log(previewIds);
console.log(JSON.stringify(previewIds)); // still numeric
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="categoryInterestCarousel_3">
  <span class="interestOwl" id="x183"></span>
  <span class="somethingElse" id="x999"></span>
  <span class="interestOwl" id="x198"></span>
  <span class="interestOwl" id="x201"></span>
</div>

【讨论】:

  • 如果我让数组显示在php中,引号仍然存在。我可以以某种方式删除控制器中的引号吗?
  • 我不明白你的意思?
  • 如果我在控制台或 php 控制器中显示数组,引号仍然存在。是否可以删除php控制器中的引号?
  • 我还是不明白。你在这里运行我的代码吗?没有引号。您可以使用 JSON.stringify(previewIds) 传递它们以在 JavaScript 中对数组进行编码,然后使用 $array=json_decode($_POST['data']);
【解决方案2】:

只需在值周围添加parseInt()

$(function() {
  $(slideArray).each(function(index) {
    previewIds[index] = parseInt($(this).attr('id').replace(/\D/g, ''), 10);
  });
});

【讨论】:

  • 如果我让数组显示在php中,引号仍然存在。我可以以某种方式删除控制器中的引号吗?
  • 如何在 PHP 中显示 JS 变量?您提供的代码中缺少该部分。因为这似乎需要一个 PHP 端的解决方案然后......
  • 我已将laravel 标签添加到您的问题中。在 JavaScript 端添加 parseInt() 后,您确定数组使用整数而不是字符串正确传输吗?因为除非您的 Laravel 代码中的某些内容正在修改数据,否则它应该以整数形式到达并由 dd() 正确输出。
猜你喜欢
  • 1970-01-01
  • 2021-11-29
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
相关资源
最近更新 更多