繁体   English   中英

将数组从js发送到php

[英]send array from js to php

我正在为学校做一些任务,而且我坚持将数组从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']);$bets = json_decode($_POST['bets']);获得未定义的索引$bets = json_decode($_POST['bets']);

print_r($_POST)为空

您没有在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");
}

嗨,这是我为你做的一个例子:

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

<!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);
  }
}

检查你的阵列蚂蚁让我们知道这是否是问题=)

Hiope它有帮助

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

<!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']);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM