Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[AJAX] Functie bestaat niet maar werkt wel

Pagina: 1
Acties:

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Ik ben een applicatie aan het schrijven die bedrijven gaat helpen de werknemersgegevens te beheren. Ik heb de database- en bestandsstructuur uitgedacht en heb doordacht een Ajax framework gekozen. Ik was al begonnen om er zelf een te schrijven maar kwam er achter dat het eigenlijk onzin is om het wiel opnieuw uit te vinden. De enige rede waarom ik dat zou kunnen doen is omdat er te veel keus is en ik niet kan kiezen.

Ik heb er een gevonden die me bevalt, maar ik begrijp 1 specifiek stukje code niet, wat iemand hier misschien kan ophelderen. Ik heb gekozen voor het recht toe recht aan Flexible Ajax framework. Een universeel no-nonsense script waar ik zelf nog een hoop aan kan toevogen om het aan te laten sluiten op mijn wensen zonder door duizenden regels code te hoeven spitten.

In het voorbeeld wat bij de download zit wordt een Javascript functie aangeroepen die niet bestaat maar ook geen foutmelding oplevert. Ik heb het over regel 21 in onderstaand voorbeeld (x_multiply() ) (alleen essentiele code wordt weergegeven, de betreffende functie bestaat nergens in de code van het framework, dus ook niet in de output van "$client->get_javascript();")

Het enige wat ik kan vinden is dat het een "stub" zou kunnen zijn. Maar ik ben er nog niet uit wat dat nmou precies is.

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<html>
<head>
    <title>Multiplier</title>
  <script>
  //<![CDATA[
  //<!-- 
  <?php
    echo $client->get_javascript();
  ?>
    
    function do_multiply_cb(z) {
        document.getElementById("z").value = z;
    }
    
    function do_multiply() {
        // get the folder name
        var x, y;
        
        x = document.getElementById("x").value;
        y = document.getElementById("y").value;
        x_multiply(x, y, do_multiply_cb);
    }
    //]]>
  //-->
  </script>
    
</head>
<body>
    <input type="text" name="x" id="x" value="2" size="3">
    *
    <input type="text" name="y" id="y" value="3" size="3">
    =
    <input type="text" name="z" id="z" value="" size="3">
    <input type="button" name="check" value="Calculate" onclick="do_multiply(); return false;">
</body>
</html>

[ Voor 5% gewijzigd door Bram77 op 18-09-2007 14:24 ]


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Kuch.
[php]
<?php
echo $client->get_javascript();
?>
[/]
Hier wordt waarschijnlijk je AJAX-toolkit geïncluded? :+ Kijk anders eens in de HTML-bron van je browser.
de betreffende functie bestaat nergens in de code van het framework, dus ook niet in de output van "$client->get_javascript();")
Lezen is ook een vak. Maar ik kan het me niet voorstellen?
1) Yes, by default, x_ is added to the front of all exported PHP functions. Just think of it as the "x" in "export" ;)

[ Voor 76% gewijzigd door CodeCaster op 18-09-2007 14:33 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • André
  • Registratie: Maart 2002
  • Laatst online: 27-11 10:04

André

Analytics dude

Wat gebeurd er als je in je adresbalk "javascript:alert(x_multiply)" typt?

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Ik ben er achter dat de functie die ik niet kon vinden in de broncode dynamisch gegenereerd wordt met de volgende functie en ook waarom.

Dit is de functie die de code genereerd
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    /**
     * flxajax_client::get_one_stub()
     * returns the javascript for each function wrapper
     * @return string
     **/
    function get_one_stub($func_name) 
    {
        $html = <<<JSCRIPT
        
        // wrapper for {$func_name}
        function {$this->func_prefix}{$func_name}() {
            flxajax_do_call("{$func_name}", {$this->func_prefix}{$func_name}.arguments);
        }
JSCRIPT;
        return $html;
    }


Waarbij deze code het genereren van die functie initieerd.

PHP:
1
2
3
4
5
6
7
    // define the function to use
    function multiply($x, $y) {
        return $x * $y;
    }
    
    $ajax = &new flxajax();
    $ajax->add("multiply"); // allows multiple parameters


Het is eigenlijk niet zo heel ingewikkeld. Ik heb toch wel even lopen zoeken maar had een beetje oogkleppen op. Pardon me!


@CodeCaster: Dat is inderdaad wat hier gebeurt. Bedankt voor de feedback. De functie bestaat dus wel in de broncode van het gegenereerde bestand |:( Ik had een tikfoutje gemaakt bij het CTRL+Ffen.

[ Voor 8% gewijzigd door Bram77 op 18-09-2007 14:46 ]