Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dwukrotne wywołanie funkcji java script przez AJAX dp PHP, Nie mogę wywołać dwóch takich samych funkcji
fiasko
post
Post #1





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

Ostrzeżenie: (0%)
-----


  1. <head>
  2. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  3. <meta name="robots" content="noindex, nofollow" />
  4. <title></title>
  5. <script type="text/javascript" src="../jq/ajax.js"></script>
  6.  
  7. <?php
  8. <script type=\"text/javascript\">
  9.  
  10.  
  11. var ajax = new sack();
  12. var podkatid = '".$_POST[podkatname]."';
  13. function getpodkatlist(sel)
  14. {
  15. if (typeof(sel)== 'string' ) {
  16. var katid = sel;
  17. }
  18. else {
  19. var katid = sel.options[sel.selectedIndex].value;
  20. }
  21.  
  22. document.getElementById('podkatname').options.length = 0 ; select box
  23. if(katid.length>0){
  24. ajax.requestFile = 'getpodkat.php?podd=".$_POST[podkatname]."&katid='+katid;
  25. ajax.onCompletion = createpodkat;
  26. ajax.runAJAX();
  27. }
  28. }
  29.  
  30. function createpodkat()
  31. {
  32. var obj = document.getElementById('podkatname');
  33. eval(ajax.response);
  34. }
  35.  
  36.  
  37.  
  38. echo "
  39.  
  40. function getpodkatlist2(sel)
  41. {
  42. if (typeof(sel)== 'string' ) {
  43. var katid = sel;
  44. }
  45. else {
  46. var katid = sel.options[sel.selectedIndex].value;
  47. }
  48.  
  49. document.getElementById('podkatname').options.length = 0 ; select box
  50. if(katid.length>0){
  51. ajax.requestFile = 'getpodkat.php?podd=".$_POST[podkatname]."&katid='+katid;
  52. ajax.onCompletion = createpodkat;
  53. ajax.runAJAX();
  54. }
  55. }
  56.  
  57. function createpodkat()
  58. {
  59. var obj = document.getElementById('podkatname');
  60. eval(ajax.response);
  61. }
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68. </script>
  69. ";
  70. ?>
  71. </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
  1. <?php
  2. echo "<pre>";
  3. print_r($_POST);
  4. echo "</pre><br>";
  5. $kat = mysql_query("select * from ".$prefix."kategorie where akt=1 ");
  6.  
  7. ?>
  8.  
  9.  
  10.  
  11. działa na rzecz tego skryptu.
  12.  
  13. <form action="zapajax.php" method="post">
  14. <table>
  15. <tr>
  16. <td>Kategorie </td>
  17. <td><select id="katname" name="katname" onchange="getpodkatlist(this)" >
  18. <option value="0" >Wybierz kategorię</option>
  19.  
  20. <?php
  21. while($tabkat=mysql_fetch_assoc($kat)){
  22. if($_POST[katname] == $tabkat[id]){
  23. $zaz = 'selected="selected"';
  24. }
  25. else {
  26. $zaz = '';
  27. }
  28. echo '
  29. <option value="'.$tabkat[id].'" '.$zaz.'>'.$tabkat[nazwa].'</option>
  30. ';
  31. }
  32.  
  33.  
  34.  
  35. ?>
  36.  
  37.  
  38. </select>
  39. </td>
  40. </tr>
  41. <tr>
  42. <td>Podkategorie: </td>
  43. <td><select id="podkatname" name="podkatname">
  44. <option value="0" >Wybierz najpierw kategorię</option>
  45. </select>
  46. </td>
  47. </tr>
  48. <tr>
  49. <td></td>
  50. <td>
  51. <input type="submit" name"zapisz" value="wyślij" >
  52. </td>
  53. </tr>
  54.  
  55. </table>
  56. </form>


Ajax wywołuję ten plik getpodkat.php

  1. <?php
  2.  
  3. if(isset($_GET['katid'])) {
  4.  
  5. include("../include/config.php");
  6. include("../include/conector.php");
  7.  
  8.  
  9. $podkat = mysql_query("select * from ".$prefix."podkategorie where id_kat= '".mysql_real_escape_string($_GET['katid'])."'");
  10. if ($_GET['katid'] == 0 ) {
  11. $op_podkat = iconv('ISO-8859-2', 'UTF-8', 'Wybierz podkategorię');
  12. echo "obj.options[obj.options.length] = new Option('".$op_podkat."','0');
  13. ";}
  14.  
  15. while($tabpodkat=mysql_fetch_assoc($podkat))
  16. {
  17. if ($tabpodkat[id] == $_GET['podd'] )
  18. {
  19. $selected = 'seleted=\"selected\"';
  20. }
  21.  
  22. $tabpodkat[nazwa] = iconv('ISO-8859-2', 'UTF-8', $tabpodkat[nazwa]);
  23. echo "obj.options[obj.options.length] = new Option('".$tabpodkat[nazwa]."','".$tabpodkat[id]."' , '".$selected."');
  24. ";
  25. $selected = '';
  26. }
  27.  
  28. }
  29. ?>


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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:26