Med risiko for at have bevæget mig på virkelig dybt vand, har jeg forsøgt mig med følgende:
<?php
//http://www.eksperten.dk/spm/819020
header("Content-Type: text/html; charset=utf-8");
if(isset($_POST['model']) && is_numeric($_POST['model'])){
$model = intval($_POST['model']);
switch($model){
case 1:
echo '{"model":[{"id": "1","text": "3310"},{"id": "2","text": "8310"}]}';
break;
case 2:
echo '{"model":[{"id": "1","text": "W880"},{"id": "2","text": "K580i"}]}';
break;
default:
echo '{"error":[{"msg": "Model Not Found"}]}';
}
exit();
}
if(isset($_POST['provider']) && is_numeric($_POST['provider'])){
$provider = intval($_POST['provider']);
switch($provider){
case '3310':
echo '{"provider":[{"id": "1","text": "TDC"}]}';
break;
case '8310':
echo '{"provider":[{"id": "1","text": "Telmore"}]}';
break;
case 'W880':
echo '{"provider":[{"id": "1","text": "Sonofon"}]}';
break;
case 'K580i':
echo '{"provider":[{"id": "1","text": "M1"}]}';
break;
default:
echo '{"error":[{"msg": "Provider Not Found"}]}';
}
exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/strict.dtd"><html>
<head>
<title>819020</title>
<script type="text/JavaScript">
//<![CDATA[
(function(){if(window.XMLHttpRequest)return;var o=null,s,a=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];for(var i=0,j=a.length;i<j;s=a[i],i++){try{if(o=new ActiveXObject(s))break}catch(e){}}window.XMLHttpRequest=o?function(){return new ActiveXObject(s)}:null;o=null})()
function AjaxReq(sMethod, sUrl, oVars, fnCallBack) {
var oHttp = new XMLHttpRequest();
oHttp.open(sMethod, sUrl, true);
oHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
oHttp.onreadystatechange = _fnCallBack;
var aQuery = [];
for (var x in oVars) aQuery.push( encodeURIComponent(x) + "=" + encodeURIComponent(oVars[x]) );
oHttp.send( aQuery.join("&") );
aQuery = null;
function _fnCallBack() {
if (oHttp.readyState<4) return;
fnCallBack(oHttp);
oHttp = null;
}
return this;
}
function insertOption (oSelect,sOption) {
var newOption, optionToInsertBefore;
if (document.createElement && (newOption = document.createElement('option'))) {
newOption.appendChild(document.createTextNode(sOption));
if (oSelect.selectedIndex > -1) {
optionToInsertBefore = oSelect.options[oSelect.selectedIndex];
}else{
optionToInsertBefore = null;
}
oSelect.appendChild(newOption, optionToInsertBefore);
}
}
function myModelCallBack(oHttp) {
var oModel = document.getElementById("model");
var oProvider = document.getElementById("provider");
var oModels = eval('(' + oHttp.responseText + ')');
oModel.length = 0;
insertOption(oModel,'Vaelg Model');
for (var x in oModels.model){
insertOption(oModel,oModels.model[x].text);
}
oModel.disabled = false;
oProvider.disabled = true;
}
function myProviderCallBack(oHttp) {
var oProvider = document.getElementById("provider");
var oProviders = eval('(' + oHttp.responseText + ')');
oProvider.length = 0;
insertOption(oProvider,'Vaelg Selskab');
for (var x in oProviders.provider){
insertOption(oProvider,oProviders.provider[x].text);
}
oProvider.disabled = false;
}
function changeModel(obj) {
var iValue = obj.value;
if(iValue != 0){
new AjaxReq("POST", "
http://www.codebreaker.dk/exp/819020exp.php", {"model":iValue}, myModelCallBack);
}
}
function changeProvider(obj) {
var iValue = obj.value;
if(iValue != 0){
new AjaxReq("POST", "
http://www.codebreaker.dk/exp/819020exp.php", {"provider":iValue}, myProviderCallBack);
}
}
//]]>
</script>
</head>
<body>
<div>Mobil: <select id="brand" onchange="changeModel(this)"><option value="0">Vaelg Model</option><option value="1">Nokia</option><option value="2">Ericsson</option></select></div>
<div>Model: <select disabled="disabled" id="model" onchange="changeProvider(this)"><option value="0">Vaelg Model</option></select></div>
<div>Selskab: <select disabled="disabled" id="provider"><option value="0">Vaelg Selskab</option></select></div>
<div id="latest"> </div>
</body>
</html>
Fejl og lignende er gratis. :o)