Dobrý den, dělám na filtru, kde bude moct člověk vybrat značku auta a poté mu do selectu načtou modely, vytahnuté z DB. Zkoušel jsem to přes AJAXi, vytvořil jsem si php soubor, kde vytvářím XML a poté ho přes AJAXovou funkci ho načítám do zkušebního DIVu, abych věděl jestli to vůbec funguje, ale prostě ne a ne to fungovat. Přikládám všechny důležité soubory (zkrácené). Jinak upravuji to ve starém redakčním systému Sunlight XXL 1.0.1. Proto v tom mainu je output.
autaXML.php
<?php
require 'connect.php';
//Dotaz na DB
$sql = "SELECT `manufacturer_text`, `model_text`, `body_text`, `fuel_text`, `id` " .
"FROM `tip_auta` " .
"GROUP BY `manufacturer_text`";
//Vytažení dat
$brandsData = mysql_query( $sql,$databaze_s ) or die('Nelze načíst data aut; ' . mysql_error() );
//Založení XML souboru pro Ajax
header("Content-Type: text/xml");
$xml = new DOMDocument("1.0","utf-8");
$brands = $xml->createElement("znacky");
$xml->appendChild($brands);
while($zaznam = $brandsData->fetch_object()){
//Vytvořit struktůru
$brand = $xml->createElement("znacka");
$brandData = $xml->createTextNode($zaznam ->znacka);
$brand->appendChild($brandData);
$model = $xml->createElement("model");
$modelData = $xml->createTextNode($zaznam ->model);
$model->appendChild($modelData);
//Poskládat správně
$brand->appendChild($model);
$brands->appendChild($brand);
}
$vystup = $xml->saveXML();
echo $vystup;
?>
function.php
<script>
function prectiSoubor(){
var xhr;
if (window.XMLHttpRequest){
// IE7+, Firefox, Chrome, Opera, Safari
xhr=new XMLHttpRequest();
} else {
// IE6, IE5
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
if(xhr){
xhr.open("POST","autaXML.php",true);
xhr.onreadystatechange=function(){
if (xhr.readyState==4 && xhr.status==200){
xmlDoc=xhr.responseXML;
document.getElementById("zkouska").innerHTML=xmlDoc;
}
}
xhr.send(null);
if(!xhr.responseXML){
alert("Nenacetlo se XML!")
}
} else {
alert("Nenacetlo se xhr!")
}
}
</script>
main.php
<?php
require 'connect.php';
require 'functions.php';
//Výběr z databáze všechny auta
$sql1 = "SELECT * " .
"FROM `tip_auta` " .
"ORDER BY `id` DESC ".
"LIMIT " . mysql_escape_string( $start ) . ", " . mysql_escape_string( $limit ) . ";";
//Spojení s databází
$cars = mysql_query( $sql1,$databaze_s )
or die('Nelze načíst data aut; ' . mysql_error() );
//Filtr
$output = "<form class=\"filtrAut\" method=\"GET\" onsubmit=\"\">";
$output .= "<h3>Hledání vozidla</h3>";
//Filtr - Výběr značky
//$url = $_SERVER['PHP_SELF'] . "?" . $_SERVER['QUERY_STRING'];
$output .= "<p><label for=\"znackaAuta\">Značka: </label><select onchange=\"prectiSoubor()\" id=\"znackaAuta\">";
$output .= "<option value=\"nerozhoduje\">Všechny značky</option>";
//Načtení značek
if($pocet != 0){
$sql2 = "SELECT `manufacturer_text`, `model_text`, `body_text`, `fuel_text`, `id` " .
"FROM `tip_auta` " .
"GROUP BY `manufacturer_text`";
//Vytažení dat
$brandsData = mysql_query( $sql2,$databaze_s )
or die('Nelze načíst data aut; ' . mysql_error() );
//Procházení dat
while($znacky = MySQL_Fetch_Array($brandsData)){
$znacka = $znacky['manufacturer_text'];
//Přidávání optionu
$output .= "<option value=\"" . $znacka . "\">" . $znacka ."</option>";
}
}
$output .= "</select></p>";
//Filtr - Výběr modelu
$output .= "<p><label for=\"modelAuta\">Model: </label><select id=\"modelAuta\">";
$output .= "<option value=\"nerozhoduje\">Všechny modely</option>";
$output .= "</select></p>";
//Tlačítko filtrovat
$output .= "<button onclick=\"prectiSoubor()\"type=\"submit\">Hledat vozidla</button>";
$output .= "</form>";
$output .= "<div id=\"zkouska\"></div>";
?>
Všechno funguje v pořádku jen se nechce načíst XMLko do toho DIVu zkouška. Hlásí to alert, že se nenačetlo XML. Děkuji předem za jakoukoli pomoc, jelikož si fakt už nevím rady.