Forum » Izdelava spletišč » JavaScript - funkcija ni definirana?
JavaScript - funkcija ni definirana?
Housy ::
Housy ::
Kot vidim, nisem edini, ki tak dolgo bedi
V glavi (head) includam skripto.
V glavi (head) includam skripto.
<script type="text/javascript" src="ajax.js"></script>
Housy ::
Problem zgleda nastane tukaj. Imam namreč dva fajla (index.php in stranke.php). V indexu je vsa html in ajax koda, v stranke.php pa nardim mysql poizvedbo in v tabeli izpišem vsa imena ter ostale podatke. Zraven vsake izpisane stranke pa je dodan še gumb UREDI in če kliknem nanj, se sproži funckija ShowEdit(), ki pa ne deluje. Morda zato, ker ni klicana direktno v index fajlu, kjer je includana tudi vsa ajax koda, ampak je klicana v stranke.php
Housy ::
Bom raje priložil kar kodo vseh treh datotek, saj bo verjetno tako najlažje. Bil bi zelo hvaležen, če nekdo pregleda kodo in pove, kaj delam narobe. Hvala
datoteka index.php
datoteka stranke.php
ajax.js
datoteka index.php
<!DOCTYPE html> <html lang="sl"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <title>Urejanje v Ajaxu</title> <style type="text/css"> table tr th, table tr td { text-align: center; vertical-align: top } </style> <script type="text/javascript" src="ajax.js"></script> </head> <body Onload="javascript:dataUpdate('list');"> <form id="form"> <span id="editForm" style="display='none';"> <table cellpadding="0" cellspacing="5"> <tr> <th>ID</th> <th>NAME</th> <th>EMAIL</th> <th>COUNTRY</th> </tr> <tr> <td><input type="text" name="txtID" id="txtID" disabled="true" /></td> <td><input type="text" name="txtName" id="txtName" /></td> <td><input type="text" name="txtName" id="txtEmail" /></td> <td><input type="text" name="txtName" id="txtCountry" /></td> </tr> <tr> <td colspan="2"><input type="button" name="update" id="update" value="Update" onClick="javascript:dataUpdate('update');" /></td> </tr> </table> </span> <span id="response"></span> </form> </body> </html>
datoteka stranke.php
<?php $mode = @$_POST["mode"]; mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("stranke") or die(mysql_error()); if($mode == "update") { $sql = "UPDATE members SET name = '".mysql_real_escape_string($_POST["name"])."', email = '".mysql_real_escape_string($_POST["email"])."', country = '".mysql_real_escape_string($_POST["email"])."' WHERE id = '".mysql_real_escape_string(intval($_POST["id"]))."'"; $qry = mysql_query($sql) or die(mysql_error()); } $sql = "SELECT * FROM members ORDER BY id DESC"; $qry = mysql_query($sql) or die(mysql_error()); ?> <table width="640" border="1"> <tr> <th>ID</th> <th>NAME</th> <th>EMAIL</th> <th>COUNTRY</th> <th> </th> </tr> <?php while($result = mysql_fetch_array($qry)) { ?> <tr> <td><div align="center"><?php print $result["id"]; ?></div></td> <td><?php print $result["name"]; ?></td> <td><?php print $result["email"]; ?></td> <td><?php print $result["country"]; ?></td> <td align="center"><a href="javascript:ShowEdit('<?php print $result["id"]; ?>', '<?php print $result["name"]; ?>', '<?php print $result["email"]; ?>', '<?php print $result["country"]; ?>');">Edit</a></td> </tr> <?php } ?> </table> <?php mysql_close(); ?>
ajax.js
function dataUpdate(mode) { var ajaxRequest; // The variable that makes Ajax possible! try { // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try { ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } var url = "stranke.php"; if(mode == "update") { var parameters = "id=" + enodeURI(document.getElementById("txtID").value) + "&name=" + enodeURI(document.getElementById("txtName").value) + "&email=" + encodeURI(document.getElementById("txtEmail").value) + "&country=" + encodeURI(document.getElementById("txtCountry").value) + "&mode=" + mode; } if(mode == "list") { var parameters = ''; } ajaxRequest.open("POST", url, true); ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); ajaxRequest.setRequestHeader("Content-length", parameters.length); ajaxRequest.setRequestHeader("Connection", "close"); ajaxRequest.send(parameters); ajaxRequest.onreadystatechange = function() { if(ajaxRequest.readyState == 3) { document.getElementById("response").innerHTML = "The script is loading ..."; } if(ajaxRequest.readyState == 4) { document.getElementById("editForm").style.display = 'none'; document.getElementById("txtID").value = ''; document.getElementById("txtName").value = ''; document.getElementById("txtEmail").value = ''; document.getElementById("txtCountry").value = ''; document.getElementById("response").innerHTML = ajaxRequest.responseText; } } var ShowEdit = function(id, name, email, country) { document.getElementById("editForm").style.display = ''; document.getElementById("txtID").value = id; document.getElementById("txtName").value = name; document.getElementById("txtEmail").value = email; document.getElementById("txtCountry").value = country; } }
Zgodovina sprememb…
- spremenil: Housy ()
frudi ::
V ostalo se nisem poglabljal, ampak problem s funkcijo ShowEdit je, da je definirana kot 'privatna' znotraj dataUpdate funkcije, torej izven tega konteksta ni dostopna.
Glede na to, da ShowEdit ni odvisna od ostale vsebine dataUpdate, je najlažja rešitev, da jo definiraš posebej. Torej namesto:
Glede na to, da ShowEdit ni odvisna od ostale vsebine dataUpdate, je najlažja rešitev, da jo definiraš posebej. Torej namesto:
function dataUpdate(mode) { ... var ShowEdit = function(...) {} }naredi:
function dataUpdate(mode) { ... } function ShowEdit(...) { ... }
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)
gnomee ::
Pa tukaj pri id in name imaš verjetno napako - encodeURI.
var url = "stranke.php"; if(mode == "update") { var parameters = "id=" + enodeURI(document.getElementById("txtID").value) + "&name=" + enodeURI(document.getElementById("txtName").value) + "&email=" + encodeURI(document.getElementById("txtEmail").value) + "&country=" + encodeURI(document.getElementById("txtCountry").value) + "&mode=" + mode;
Zgodovina sprememb…
- spremenil: gnomee ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | JqueryOddelek: Izdelava spletišč | 1831 (1555) | mk818764 |
» | PHP include(); problemOddelek: Programiranje | 1000 (789) | DuleKrtola |
» | jquery in div-i (strani: 1 2 )Oddelek: Izdelava spletišč | 11456 (10194) | lisjak |
» | AJAX neznana težavaOddelek: Programiranje | 1226 (1020) | luksorzi |
» | [php-html] začetniški problemiOddelek: Programiranje | 1557 (1270) | Ziga Dolhar |