在PHP中解码javascript数组

问题描述 投票:0回答:1

几天来我一直在尝试用PHP解码Javascript数组,但是没有运气。

我基本上有一个PHP while循环,该循环遍历我的SQL数据库中的所有产品,并且它在每行上弹出一个复选框,以允许用户选择1个或多个产品来通过PHP脚本进行操作。

我的HTML和表单是:

<div class="error_box"><?php echo $_SESSION['newdata']; ?></div>
<div class="error_box"><?php echo $_SESSION['errordata']; ?></div>
<form>
<input type='submit' value='Bulk update products -->' id='bulk-change-products' onClick='updateProduct()'>
<input type='checkbox' name='products[]' id='serialized' value='$product_no' onclick='serialize()'>
</form>

我的Javascript代码:

window.serialize = function serialize() {
  var values = [].filter.call(document.getElementsByName('products[]'), function(c) {
    return c.checked;
  }).map(function(c) {
    return c.value;
  });

  console.log(values);
  $('#result').html(values);

}

function updateProduct(values){
    $.ajax({
         url: "https://tech-seo.co.uk/ecommerce/products/bulk_process_products.php",
        method: "POST",
        data: {array:values},
        success: function(res){

        }

    }) 
}

控制台日志正确显示数据,例如

(2) ["1", "2"]
0: "1"
1: "2"
length: 2

使用AJAX发布后,我的PHP代码:

session_start();

 $getArray = json_decode($_POST['data']);

// checking if data exists
if ($getArray != null ){
    $_SESSION['newdata'] = "Success!";
}else{
    // either of the values doesn't exist
   $_SESSION['errordata'] = ">>>>>>  There was an error  <<<<<<<";
}

我总是得到'>>>>>>,当我选择产品并单击提交按钮时出现错误<<<<<<

感谢您的任何帮助。

谢谢。斯坦。

javascript php html json
1个回答
0
投票

当您从values属性调用updateProduct()时,您没有传递onclick数组。它需要自己获取值。

function updateProduct() {
  var values = $("input[name='products[]']:checked").map((i, el) => el.value).get();
  $.ajax({
    url: "https://tech-seo.co.uk/ecommerce/products/bulk_process_products.php",
    method: "POST",
    data: {
      products: values
    },
    success: function(res) {
    }
  })
}

如果在data:选项中传递数组,则无需在PHP中使用json_decode()。 jQuery将使用URL编码的格式发送参数,PHP将该格式解码为$_POST元素中的数组。

$getArray = $_POST['products'];
© www.soinside.com 2019 - 2024. All rights reserved.