4

How can i pass data (associative array) to php file.

 function ajax(url,data,callback)
        {
            var xmlhttp;
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                xmlhttp.onreadystatechange = function() {
                    if ( xmlhttp.readyState === 4 ) {
                        callback( xmlhttp.responseText );
                    }
                }
            }
            xmlhttp.open("POST",url,true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send(data);
        }
5
  • 3
    Use JSON Commented May 3, 2012 at 18:38
  • 1
    json_encode and json_decode are your friends Commented May 3, 2012 at 18:39
  • 1
    And please use jQuery, this code looks like the stoneage... Commented May 3, 2012 at 18:41
  • 2
    Not enough jQuery Commented May 3, 2012 at 18:41
  • youmightnotneedjquery.com Commented Feb 4, 2016 at 21:05

2 Answers 2

8

The way i read this, you are in javascript, and you have a javascript object (javascript does not have associative arrays, just arrays and objects). So, whatever data you have, you need to turn it into a string and sent it via POST or GET to your php script. I would recommend including JSON3 as a polyfill to ensure you will have JSON.stringify on your page (for cross-browserness). Code will be something like this:

var data = {
    someData: 'data',
    moreData: [
        'blah',
        'bleh'
    ]
};

var stringData = JSON.stringify( data );

// using jquery ajax for brevity (http://api.jquery.com/jQuery.ajax/)
$.ajax({
  type: "POST",
  url: "your-php-script.php",
  data: { data: stringData }
});

Now your php script can snag that string and turn it back into json itself:

<?php
    $dataString = $_POST['data'];
    $data = json_decode($dataString);

Hopefully this is what you were looking for. Cheers!

Sign up to request clarification or add additional context in comments.

Comments

0

You can use PHP's JSON functions to achieve this. It will encode/decode arrays into a notation that javascript can handle.

3 Comments

No, but it's the only sane way.
you could use serialize() and unserialize(), but you'll probably run into errors somewhere. JSON was created to do what you want.
so its like this var json = { 'info' : data};

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.