JQuery返回的字符串不是数组,尽管明显的代码逻辑...为什么?

时间:2015-08-25 17:46:37

标签: php jquery arrays post

我修改了另一位开发人员编写的代码。在这里,他收集值并将它们从数组(dataId)转换为以逗号分隔的字符串:

$("#retrieve_works_form").on('submit', function(e) {
    e.preventDefault();
    $('#toggle_search_terms').trigger('click');
    var dataId = new Array();
    $('li.nw').each(function() {
        var thisDataId = $(this).attr('data-id');
        dataId.push(thisDataId);
    });
    $('li.added_gallery_item').each(function() {
        var thisDataId = $(this).attr('data-id');
        dataId.push(thisDataId);
    });
    $('#returned_gallery_work_ids').val(dataId.join(','));

$_POST['returned_gallery_work_ids']因此在dataId数组中保存以逗号分隔的值字符串。我想修改它,所以它只返回数组,每个元素都在一个顺序索引中。我认为这样做可以解决问题:

$('#returned_gallery_work_ids').val(dataId);

......但它并没有;它返回一个逗号分隔的值字符串,与dataId.join(',')运算符的参数.val()时返回的值没有什么不同。

这里确实有两个问题:

  1. 为什么结果在每种情况下都是以逗号分隔的字符串?
  2. 如何让它返回dataId数组?
  3. [第二个问题是真正必要的问题,但我想了解这里发生的事情的机制。]

1 个答案:

答案 0 :(得分:1)

在输入中存储任何类型的值时,它会以字符串形式存储,因此如果您以后检索它,则需要将其拆分:

var galleryArray = $("#returned_gallery_work_ids").val().split(',');

或者在服务器端的PHP中,你将使用它:

$galleryArray = explode( ",", $_POST['returned_gallery_work_ids'] );

希望这有帮助。