【发布时间】:2023-03-16 03:35:01
【问题描述】:
我有一个运输区域数据库,我想使用 PHP 通过 AJAX 请求访问该数据库。
PHP 没有为 responseXML 正确生成 XML。如果我将我的 url 更改为 .xml 文件,那么脚本就可以工作。
这是我生成 XML 的 PHP `
<?
libxml_use_internal_errors(true);
$country_id = intval($_GET['country']);
$country_id = 74;
$con = mysqli_connect("localhost", "tradingb_data", "[s;_m@NN2;)F", 'tradingb_tradingbloc');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
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)) {
$row_id = $row['id'];
$row_zone = $row['zone'];
echo "<province> <zoneid>$row_id</zoneid><zone>$row_zone</zone></province>";
}
echo "</shipping_zones>";
mysqli_close($con);
?>
`
这是我的 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();
}
}
`
我知道我的错误在于 PHP 为 AJAX 请求生成的内容。
【问题讨论】:
标签: javascript php ajax xml