php - Auto-populating select boxes using jQuery and Ajax - not working in anything newer than 1.3.2 -
i have been going through tutorial on auto-populating boxes using jquery , ajax: http://remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax/
and in demo author running jquery version 1.2.3. locally managed function running on jquery 1.3.2. running on version above 1 not working (the second box not populating).
here jquery code:
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" charset="utf-8"> $(function(){ $("select#ctljob").change(function(){ $.getjson("/select.php",{id: $(this).val(), ajax: 'true'}, function(j){ var options = ''; (var = 0; < j.length; i++) { options += '<option value="' + j[i].optionvalue + '">' + j[i].optiondisplay + '</option>'; } $("select#ctlperson").html(options); }) }) }) </script>
this html code:
<form action="/select_demo.php"> <label for="ctljob">job function:</label> <select name="id" id="ctljob"> <option value="1">managers</option> <option value="2">team leaders</option> <option value="3">developers</option> </select> <noscript> <input type="submit" name="action" value="load individuals" /> </noscript> <label for="ctlperson">individual:</label> <select name="person_id" id="ctlperson"> <option value="1">mark p</option> <option value="2">andy y</option> <option value="3">richard b</option> </select> <input type="submit" name="action" value="book" /> </form>
this server-side php:
<?php if ($_get['id'] == 1) { echo <<<here_doc [ {optionvalue: 0, optiondisplay: 'mark'}, {optionvalue:1, optiondisplay: 'andy'}, {optionvalue:2, optiondisplay: 'richard'}] here_doc; } else if ($_get['id'] == 2) { echo <<<here_doc [{optionvalue:10, optiondisplay: 'remy'}, {optionvalue:11, optiondisplay: 'arif'}, {optionvalue:12, optiondisplay: 'jc'}] here_doc; } else if ($_get['id'] == 3) { echo <<<here_doc [{optionvalue:20, optiondisplay: 'aidan'}, {optionvalue:21, optiondisplay:'russell'}] here_doc; }?>
how rewrite function works with, example, jquery 1.5?
thanks help!
edit: mark's solution worked, html file in it, , should relatively easy adapt read saved json file.
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>select test</title> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(function(){ var data = [ [ {optionvalue: 0,optiondisplay: 'mark'}, {optionvalue: 1,optiondisplay: 'andy'}, {optionvalue: 2,optiondisplay: 'richard'} ], [ {optionvalue: 10,optiondisplay: 'remy'}, {optionvalue: 11,optiondisplay: 'arif'}, {optionvalue: 12, optiondisplay: 'jc'} ], [ {optionvalue: 20,optiondisplay: 'aidan'}, {optionvalue: 21,optiondisplay: 'russell'} ] ]; $("#ctljob").change(function() { var $persons = $("#ctlperson").empty(); $.each(data[$(this).val() - 1], function() { $persons.append("<option value=" + this.optionvalue + ">" + this.optiondisplay + "</option>"); }); }); }) </script> </head> <body> <form action="/select_demo.php"> <label for="ctljob">job function:</label> <select name="id" id="ctljob"> <option value="1">managers</option> <option value="2">team leaders</option> <option value="3">developers</option> </select> <noscript> <input type="submit" name="action" value="load individuals" /> </noscript> <label for="ctlperson">individual:</label> <select name="person_id" id="ctlperson"> <option value="1">mark p</option> <option value="2">andy y</option> <option value="3">richard b</option> </select> <input type="submit" name="action" value="book" /> </form> </body> </html>
assuming json valid should able use following:
$("select#ctljob").change(function(){ $.getjson("/select.php",{id: $(this).val(), ajax: 'true'}, function(data){ var $persons = $("#ctlperson").empty(); $.each(data, function() { $persons.append("<option value=" + this.optionvalue + ">" + this.optiondisplay + "</option>"); }); }) });
updated use markup in question on jsfiddle.
Comments
Post a Comment