<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<meta name="robots" content="noindex, nofollow" />
<title></title>
<script type="text/javascript" src="../jq/ajax.js"></script>
<?php
<script type=\"text/javascript\">
var ajax = new sack();
var podkatid = '".$_POST[podkatname]."';
function getpodkatlist(sel)
{
if (typeof(sel)== 'string' ) {
var katid = sel;
}
else {
var katid = sel.options[sel.selectedIndex].value;
}
document.getElementById('podkatname').options.length = 0 ; select box
if(katid.length>0){
ajax.requestFile = 'getpodkat.php?podd=".$_POST[podkatname]."&katid='+katid;
ajax.onCompletion = createpodkat;
ajax.runAJAX();
}
}
function createpodkat()
{
var obj = document.getElementById('podkatname');
eval(ajax.response);
}
echo "
function getpodkatlist2(sel)
{
if (typeof(sel)== 'string' ) {
var katid = sel;
}
else {
var katid = sel.options[sel.selectedIndex].value;
}
document.getElementById('podkatname').options.length = 0 ; select box
if(katid.length>0){
ajax.requestFile = 'getpodkat.php?podd=".$_POST[podkatname]."&katid='+katid;
ajax.onCompletion = createpodkat;
ajax.runAJAX();
}
}
function createpodkat()
{
var obj = document.getElementById('podkatname');
}
</script>
";
?>
</head>
w Body wywołuję tak:
<body onload="getpodkatlist1(40)" ; onload="getpodkatlist2(23)">
wywołuje mi się tylko jedna z nich ale dwóch na raz nie mogę wywołać .
Dorwałem wtedy w necie kolejną funkcję do wywoływania dwóch funkcji javascript .
function onLoadHandler(init_fxn)
{
var old_init = window.onload;
var new_init = init_fxn;
window.onload = function(){
if (typeof(old_init)=="function")
{
old_init;
}
new_init;
}
return this;
}
</script>
i próbowałem to wywołać tak:
<script type="text/javascript">
new onLoadHandler(getpodkatlist('21'));
new onLoadHandler(getpodkatlist2('40'));
</script>
Gdy wywołuję powyższym handlerkiem funkcję getpodkatlist('21') lub getpodkatlist2('21') to żadna z nich nie działa. Jak wywoływałem je w Body przez onload to chociaż jedna zawsze się ładowała.
Gdy wywołuję handlerkiem testową funkcję np. jedną funkcją wołanie alertu, a drugą funkcją np. documet.write() to wszystko działa pięknie.
No i teraz sądzę, że problem jest gdzieś w ajax. Tylko nie za bardzo mam pomysł jak wywołać ajax 2 razy albo żeby odpytał plik .php ,a ajax.requestFile odebrał wynik i go zwrócił po czym żeby zrobił to samo na rzecz kolejnego obiektu tą samą metodą.
ajax.requestFile - może tu jest gdzieś problem?
na pytanie do czego jest ta funkcja odpowiadam - a no do wywoływania kategorii, a potem podkategorii z opcją zapamiętywania wyboru po wysłaniu formularza .Chcę żeby funkcja onload zwrócila mi zapamiętany wynik w opcji wyboru
<?php
$kat = mysql_query("select * from ".$prefix."kategorie where akt=1 ");
?>
działa na rzecz tego skryptu.
<form action="zapajax.php" method="post">
<table>
<tr>
<td>Kategorie </td>
<td><select id="katname" name="katname" onchange="getpodkatlist(this)" >
<option value="0" >Wybierz kategorię</option>
<?php
if($_POST[katname] == $tabkat[id]){
$zaz = 'selected="selected"';
}
else {
$zaz = '';
}
<option value="'.$tabkat[id].'" '.$zaz.'>'.$tabkat[nazwa].'</option>
';
}
?>
</select>
</td>
</tr>
<tr>
<td>Podkategorie: </td>
<td><select id="podkatname" name="podkatname">
<option value="0" >Wybierz najpierw kategorię</option>
</select>
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name"zapisz" value="wyślij" >
</td>
</tr>
</table>
</form>
Ajax wywołuję ten plik getpodkat.php
<?php
if(isset($_GET['katid'])) {
include("../include/config.php");
include("../include/conector.php");
if ($_GET['katid'] == 0 ) {
$op_podkat = iconv('ISO-8859-2', 'UTF-8', 'Wybierz podkategorię');
echo "obj.options[obj.options.length] = new Option('".$op_podkat."','0'); ";}
{
if ($tabpodkat[id] == $_GET['podd'] )
{
$selected = 'seleted=\"selected\"';
}
$tabpodkat[nazwa] = iconv('ISO-8859-2', 'UTF-8', $tabpodkat[nazwa]);
echo "obj.options[obj.options.length] = new Option('".$tabpodkat[nazwa
]."','".$tabpodkat[id
]."' , '".$selected."'); ";
$selected = '';
}
}
?>
Na pytanie po co wywołuje tą funkcję dwa razy - odpowiadam bo chcę dać do wyboru użytkownikom dopisania się do kilku kategorii w katalogu.