Sending Javascript Object to PHP via Ajax

I’m learning Ajax by failure and have hit a wall:I have an array (if it matters, the array is storing number id’s based on what checkboxes the user checks) that is written in Javascript.I have a function that is called when the user clicks the ‘save’ button. The function is as follows:function createAmenities() …

via PHP Website Development » Search Results » ajax:

Sending Javascript Object to PHP via Ajax

I’m learning Ajax by failure and have hit a wall:
I have an array (if it matters, the array is storing number id’s based on what checkboxes the user checks) that is written in Javascript.
I have a function that is called when the user clicks the ‘save’ button. The function is as follows:
function createAmenities()
if (window.XMLHttpRequest)
//code for IE7+, Firefox, Chrome and Opera
xmlhttp = new XMLHttpRequest();

else
//code for IE6, IE5
xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);

xmlhttp.onreadystatechange = function ()
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
document.getElementById(‘message’).innerHTML = xmlhttp.responseText;

}

var url = “create_amenities.php”;

xmlhttp.open(“GET”, url, true);

xmlhttp.send();

}My question is: What can I put in this function to pull the array into the php script I’m trying to call (‘create_amenities.php’)?
furthermore, should I try using JSON? And if so, how could I send a JSON object via ajax?
Thanks in advance.
……………………………………….

If your array has more then 1 dimension or is an associative array you should use JSON.
Json turns a complete array structure into a string. This string can easily send to your php application and turned back into a php array.
More information on json: http://www.json.org/js.html
var my_array = … ;
var json = JSON.stringify( my_array );In php you can decode the string with json_decode:
http://www.php.net/manual/en/function.json-decode.php
var_dump(json_decode($json));
……………………………………….

Loop over the array and append encodeURIComponent(‘keyname[]‘) + ‘=’ + encodeURIComponent(theArray[i]) + ‘&’ to the query string each time.
furthermore, should I try using JSON?
You could, but it would mean decoding JSON at the other end instead of letting normal form handling take care of it.
And if so, how could I send a JSON object via ajax?
There is no such thing as a JSON object. JSON takes the form of a string, and you can include strings in query strings (just remember to encodeURIComponent).
……………………………………….

First off, yes, do not write ajax by hand. You are unlikely to produce something that truly works on all browsers.
The best approach to your actual problem would be to submit your array as cgi parameters.
If the checkboxes are in a form, you need to do very little – simply submit the form,


$.post(“test.php”, $(“#testform”).serialize());See http://api.jquery.com/jQuery.post/ for more details on how to do that. Your list will turn up as an array in PHP.
Or to augment your own example with something very simple, do this:
url = url + ‘?checkboxes=’ + checkboxes.join(‘,’);Now just split it inside PHP and you’ve got it back!
……………………………………….

Please consider to use http://api.jquery.com/jQuery.get. It’s easy to use.

For more info: Sending Javascript Object to PHP via Ajax

PHP Website Development » Search Results » ajax

Sending Javascript Object to PHP via Ajax

Share this post:

Related Posts

Leave a Comment