I have a database of shipping zones that I want to access through an AJAX request using PHP.
If I change to xml.responseTEXT
I am able to read the last entry and appropriately add it as an option to my select menu.
I tried encoding my PHP output into simpleXML()
and was able to use .innerHTML=value
to print the result to my webpage, but unable to parse the content to be used to create options for my select menu.
Here is my PHP to generate XML `
mysqli_select_db($con,"ajax_demo");
$sql="SELECT * FROM `shipping_zones` WHERE zone_type = 'Province' and parent_zone = '$country_id' ORDER BY zone";
$result = mysqli_query($con,$sql);
echo "<?xml version=\"1.0\" ?>
<shipping_zones>";
while($row = mysqli_fetch_array($result)) {
echo "<province>
<zoneid>" . $row['id'] . "</zoneid>
<zone>" . $row['zone'] . "</zone>
</province>";
}
echo "</shipping_zones>";
mysqli_close($con);
?> `
Here is my XML output from PHP <?xml version="1.0" ?> <shipping_zones><province> <zoneid>597</zoneid> <zone>Alberta</zone> </province><province> <zoneid>595</zoneid> <zone>British Columbia</zone> </province><province> <zoneid>605</zoneid> <zone>Labrador</zone> </province><province> <zoneid>594</zoneid> <zone>Manitoba</zone> </province><province> <zoneid>606</zoneid> <zone>New Brunswick</zone> </province><province> <zoneid>604</zoneid> <zone>New Foundland</zone> </province><province> <zoneid>600</zoneid> <zone>Northwest Territory</zone> </province><province> <zoneid>603</zoneid> <zone>Nova Scotia</zone> </province><province> <zoneid>598</zoneid> <zone>Nunavut</zone> </province><province> <zoneid>596</zoneid> <zone>Ontario</zone> </province><province> <zoneid>607</zoneid> <zone>Prince Edward Island</zone> </province><province> <zoneid>601</zoneid> <zone>Quebec</zone> </province><province> <zoneid>602</zoneid> <zone>Saskatchewan</zone> </province></shipping_zones>
Here is my Javascript `
function changeCountry(){
var e = document.getElementById(\"country_id\");
var country_id = e.options[e.selectedIndex].value;
if(country_id == 1){
// Display states
document.getElementById('display_province').style.display = \"none\";
document.getElementById('display_state').style.display = \"\";
document.getElementById('display_state').style.visibility = \"visible\";
}
else{
// Display Province
document.getElementById('display_state').style.display = \"none\";
document.getElementById('display_province').style.display = \"\";
document.getElementById('display_province').style.visibility = \"visible\";
// Remove current selection list
// Get Provinces for country_id
var xmlhttp = new XMLHttpRequest();
// Include fix for IE6 and IE5
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() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var xmlDoc = xmlhttp.responseXML;
// get each property
// Last known execution
var x=xmlDoc.getElementsByTagName(\"province\");
for (i=0;i<x.length;i++)
{
var e = document.getElementById(\"province_id\");
var opt = document.createElement('option');
opt.value = x[i].getElementsByTagName('zoneid')[0];
opt.innerHTML = x[i].getElementsByTagName('zone')[0];
e.appendChild(opt);
}
}
}
xmlhttp.open(\"GET\",\"get_provinces.php?country_id=\"+country_id,true);
xmlhttp.setRequestHeader(\"Content-type\", \"text/xml\");
xmlhttp.send();
}
}
`
Is my error in encoding the PHP output into an object? Is my error in parsing the responseXML?
Thanks
Aucun commentaire:
Enregistrer un commentaire