2

I am having trouble passing a Javascript array to a PHP array on the same page when the submit button is pressed. I have seen discussion of JSON.stringify and json_encode on other posts, but I am not sure how to use those functions with my code.

JS:

    <script>
        var kegs = [];
        var textarea = document.getElementById("your_textarea");
        $("#kegId").on('keyup', function (e) {
            if (e.keyCode == 13) {
                kegs.push($(this).val());
                $("#kegId").val("");
                textarea.value = kegs.join("\n");

                };
            });
    </script>

PHP:

if (!isset($_POST['btn-addkegs'])) {
//I want to set the Javascript array 'kegs' to a php variable here
6
  • Possible duplicate of Serializing to JSON in jQuery Nov 23, 2016 at 4:10
  • You need to read some introductory materials about AJAX. That said, it's hard to know how to help you unless we know what you actually want to do with the data. Just adding it to an array is pointless. What are you actually trying to accomplish?
    – elixenide
    Nov 23, 2016 at 4:14
  • @EdCottrell I want to have access to the data so that I can loop through it and add it to a database.
    – jh95
    Nov 23, 2016 at 4:17
  • @jh95 Then you definitely need to use AJAX. Because JS is client-side and PHP is server-side, you need to make a request in the background using AJAX to send the data to the server.
    – elixenide
    Nov 23, 2016 at 4:20
  • @EdCottrell Is it possible to use AJAX "on submit"? The array has the potential to change (add or remove items) until the submit button is clicked.
    – jh95
    Nov 23, 2016 at 4:23

3 Answers 3

1

Using Ajax will do it for you! I wrote this code that sends an array to PHP on the same page. Once you get the array in PHP you can do whatever you want with it :).Just copy and paste this file and called it index.php to see the result. This will totally help you!

<?php

  $data = array();
   if(isset($_POST['myArray']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH'])){
   $data = 'You array is: ' . $_POST['myArray'];       
   echo json_encode($data);  
   die();      
   }
?>
 <html>
 <head>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>

<body>
<div id = "random"></div>

<script type = "text/javascript">

$(document).ready(function() {

var arr = [2,4,5,6,7];
var myArray =  JSON.stringify(arr);

$.ajax({
    url: "index.php",
    method: "POST",
    dataType: "json",
    data: {myArray: myArray},
    success: function (result) {
    alert("result: " + result);
    console.log(result);
  $("#random").html(result);
 }
});

});

</script>

</body>
</html>
1

This can be achieved by using ajax(), its syntax is:

$.ajax({
        url: 'process.php',     // file where data processing is done                   
        type: 'POST',                                  
        data: {
            var1  :val1,
            var2  :val2
            // parameter set
        },
        success: function(response){    // response from process.php
            // do your stuff here
        }
    });

Read more about ajax

1
 As you are using the jquery
var jsArray = makeJavascriptArrayhere //
   $.ajax({
            url: urlToPhpFile,     // file where data processing is done                   
            type: Method,                                  
            data:jsArray,
            success: function(response){    // response from process.php
                // do your stuff here
            }
        });

now in your php file 

var_dump($_POST); //see on network liner tabs

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.