Solved

AJAX building query string from checkbox array

Posted on 2011-09-26
3
265 Views
Last Modified: 2012-05-12
Hi all,

I'm trying to build a querystring from a check box array.

Here's my AJAX code - the var options and var querystring are the areas I'm guessing I need to flesh out but not quite sure how to do it:

<script language="javascript" type="text/javascript">
<!-- 
//Browser Support Code
function ajaxFunction(){
	var ajaxRequest;  // The variable that makes Ajax possible!
	
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
			if(ajaxRequest.readyState == 4){
			document.getElementById('result').innerHTML = ajaxRequest.responseText;
		}
	}
	//Need to grab query string and append checked checkboxes array
	var options = document.get......
	var queryString = "?filter_options=" + options....;
	ajaxRequest.open("GET", "filter_query.php" + queryString, true);
	ajaxRequest.send(null);  
}

//-->
</script>

Open in new window



Here's some checkboxes:

<label for="1"><input type="checkbox" onClick="ajaxFunction();" name="filter_option[]" value="1" id="1">Option 1</label>
<label for="2"><input type="checkbox" onClick="ajaxFunction();" name="filter_option[]" value="2" id="2">Option 2</label>
<label for="3"><input type="checkbox" onClick="ajaxFunction();" name="filter_option[]" value="3" id="3">Option 3</label>

Open in new window


There can be loads of these and I was thinking of sending the string of id's to the server like:
filter_option=1-2-3-4-5-45-34-67-89 and doing an explode() on them before querying.

Lastly, the user arrives at this page with variables in the URL obtained via GET already.

e.g. search.php?qs=My+Search&date=3m


So I have a few questions around this:
A) How can this be achieved?
B) Is this the best way and is this fully browser compliant?
C) How can I include the variables already in the URL in the AJAX call? Write them into it via php?

Huge thanks
David
0
Comment
Question by:dolythgoe
3 Comments
 
LVL 82

Accepted Solution

by:
leakim971 earned 350 total points
ID: 36600799
use :

var checkboxes = document.getElementsByName("filter_option[]");
var queryString = [];
for(var i=0;i<checkboxes.length;i++) {
    if( checkboxes[i].checked ) {
        queryString.push( checkboxes[i].value );
    }
    
}
queryString = "?filter_options=" + queryString.join(",");

Open in new window


test page : http://jsfiddle.net/XekX7/
0
 
LVL 3

Assisted Solution

by:azserrata
azserrata earned 150 total points
ID: 36603584
In order to include the "variables already in URL" into the new URL you could add to leakim971 last line:

prevQS="<?php echo($_SERVER["QUERY_STRING"])?>";
queryString = "?"+prevQS+"&filter_options=" + queryString.join(",");

Open in new window


I believe this should work.

Cheers
David
0
 

Author Closing Comment

by:dolythgoe
ID: 36711193
Huge thanks guys
0

Featured Post

U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
How to restrict access to pages but still have my content indexed by Google? 4 127
mySql Syntax 7 44
SQL inner join confusion 15 42
How to count in a table in php 22 14
Popularity Can Be Measured Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for …
OverviewThis article demonstrates a simple search form using AJAX. The purpose of the article is to demonstrate how to use the same code to render a page and javascript (JQuery) and AJAX to make subsequent calls to refine the results. The princip…
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…
As a trusted technology advisor to your customers you are likely getting the daily question of, ‘should I put this in the cloud?’ As customer demands for cloud services increases, companies will see a shift from traditional buying patterns to new…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now