将数组从js发送到php

时间:2019-04-29 10:08:23

标签: javascript php ajax

我正在为学校做一些作业,我被困于将数组从js传递到php。

我不得不说我不是专家,我还在学习。我不知道我在想什么。希望有人能帮助我。

我这样尝试。

 if(bets.length > 0) {
    $.ajax({ 
       url: "mybet.php", 
       method: "POST", 
       data: { bets : JSON.stringify( bets ) }, 
       success: function(res) { 
              console.log(res);
        } 
    }); 
  }

和php文件

if (isset($_POST['bets'])) {
  $bets = json_decode($_POST['bets'], true);
  print_r($bets);

}

bets是js中的数组。我想如果我点击按钮继续收集该数组并传递给php,以便我可以使用它。我在第$bets = json_decode($_POST['bets']);行上获得了未定义的下注索引

print_r($_POST)为空

3 个答案:

答案 0 :(得分:0)

您没有在ajax请求中发送“ proceedBet”变量,而是通过更改数据来发送该变量,如下所示:

if(bets.length > 0) {
    $.ajax({ 
       url: "mybet.php", 
       method: "POST", 
       data: { bets : JSON.stringify( bets ), proceedBet: 'Some Value' }, 
       success: function(res) { 
              console.log(res);
        } 
    }); 
  }

或者您必须更改条件以检查投注是否存在,像这样:

if (isset($_POST['bets'])) {
  $bets = json_decode($_POST['bets'], true);
  print_r($_POST['bets']); // use print_r to check the data in the array
  //  User::redirect("ticket.php");
}

答案 1 :(得分:0)

嗨,这是我为您制作的一个示例:

首先,如果我从我的js数组发送的数据还可以,则html部分是显示来自request.php的数据的简单模式:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    <script
    src="http://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
  </head>
  <body>
    <div class="container">
    <h2>Modal Example</h2>
    <!-- Button to Open the Modal -->
    <button type="button" class="btn btn-primary" id="btnDisplayModal" >
      Open modal
    </button>

    <!-- The Modal -->
    <div class="modal" id="myModal">
      <div class="modal-dialog">
        <div class="modal-content">

          <!-- Modal Header -->
          <div class="modal-header">
            <h4 class="modal-title">Modal Heading</h4>
            <button type="button" class="close" data-dismiss="modal" >&times;</button>
          </div>

          <!-- Modal body -->
          <div class="modal-body">
          <br>
          <div id="add-takeout-messages">

          </div>
          </div>

          <!-- Modal footer -->
          <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
          </div>

        </div>
      </div>
    </div>

  </div>
  </body>

javascript部分是一个ajax调用,当请求完成时,它将在模态内显示数据:

$(document).ready(function() {
  var formData = {id:"1",name:"stan",lastname:"chacon",color:"blue"};
  function _ajaxMessage(formData){

  return $.ajax({
        url: "request.php",
        type: 'POST',
        data:{data:JSON.stringify(formData)},
        dataType: 'json'
      })

  }


  $("#btnDisplayModal").on('click', function(){
    _ajaxMessage(formData)
    .done(function(response){
      console.log(JSON.stringify(response));
      $('#add-takeout-messages').empty();
      $.each(response.messages,function(index,value){
        console.log(index,value);
      $('#add-takeout-messages').append('<div class="alert alert-success">' +
        '<button type="button" class="close" data-dismiss="alert">&times;</button>' +
        '<strong><i class="glyphicon glyphicon-ok-sign"></i></strong> From: '+ value.from + '<br>' +  ' msg: ' + value.msg +
        '</div>')
      })
      $("#myModal").modal();
    })
  })

})

request.php文件很简单,就像您正在使用的请求文件一样,因此我想您的问题是数组,也许格式无效,这就是为什么它为空。

if (isset($_POST["data"])) {
  $data = json_decode($_POST["data"],true);
  if ($data["name"] == "stan") {
    $array = [
      "status"=>"success",
      "messages"=>  [
        array('date' => "2019-04-11", 'msg'=>'Love you', 'from'=>'Annie' ),
        array('date' => "2019-04-10", 'msg'=>'Have a nice day', 'from'=>'Annie' )
      ]

    ];
    echo json_encode($array);
  }
}

检查您的阵列蚂蚁,让我们知道这是否是问题所在=)

希望有帮助

答案 2 :(得分:0)

简单的工作示例,您可以根据需要更改逻辑。

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    let bets = [1,2,3]; // This must come dynamically.
    if(bets.length > 0) {
        $.ajax({url: "server.php", method: "POST",  data: { bets : JSON.stringify( bets) }, success: function(result){
            $("#div1").html(result);
        }});
    }
  });
});
</script>
</head>
<body>

<div id="div1"><h2>Let jQuery AJAX Change This Text</h2></div>

<button>Send Ajax Request</button>

</body>
</html>

服务器端

<?php 
if (isset($_POST['bets'])) {
    $bets = json_decode($_POST['bets'], true);
    print_r($_POST['bets']);

}