Ciao a tutti.
Ho un problema con uno script che dovrebbe permettermi di recuperare il contenuto in output di una pagina dentro il div di un'altra pagina al click di un pulsante di un form.
In pratica una richiesta asincrona al server.
Quello che non mi torna è che messo su un web server lo script sembra funzionare, invece nell'ambiente in locale no... qualcuno sa perché?
L'errore che mi da all'atto dell'onclick è:
Lo script è composto da queste pagine:
la index.html
codice:
<html> <head> <title>Demo 1 - The Basic's</title> <script type="text/javascript" src="engine.js"></script> </head> <body> <div id="contentdiv"></div> <input type="button" onclick="ajax_get('page1.php', 'contentdiv');" value="Get content" /> </body> </html>
la page1.php
codice:
<?php echo $html = 'Questo contenuto viene fuori dal nostro programmino Ajax'; ?>
la pagina getfile.php:
codice:
<?php // Get URL and div if (!isset($_GET['url'])) { die(); } else { $url = $_GET['url']; } if (!isset($_GET['el'])) { die(); } else { $el = $_GET['el']; } // Make sure url starts with http if (substr($url, 0, 4) != 'http') { // Set error echo 'alert(\'Security error; incorrect URL!\');'; die(); } // Try and get contents $data = file_get_contents($url); if ($data === false) { // Set error echo 'alert(\'Unable to retrieve "' . $url . '"\');'; die(); } // Escape data $data = str_replace("'", "'", $data); $data = str_replace('"', "'+String.fromCharCode(34)+'", $data); $data = str_replace ("\r\n", '\n', $data); $data = str_replace ("\r", '\n', $data); $data = str_replace ("\n", '\n', $data); ?> el = document.getElementById('<?php echo $el; ?>'); el.innerHTML = '<?php echo $data; ?>';
la engine.js
codice:
// Get base url url = document.location.href; xend = url.lastIndexOf("/") + 1; var base_url = url.substring(0, xend); function ajax_do (url) { // Does URL begin with http? if (url.substring(0, 4) != 'http') { url = base_url + url; } // Create new JS element var jsel = document.createElement('SCRIPT'); jsel.type = 'text/javascript'; jsel.src = url; // Append JS element (therefore executing the 'AJAX' call) document.body.appendChild (jsel); } function ajax_get (url, el) { // Has element been passed as object or id-string? if (typeof(el) == 'string') { el = document.getElementById(el); } // Valid el? if (el == null) { return false; } // Does URL begin with http? if (url.substring(0, 4) != 'http') { url = base_url + url; } // Create getfile URL getfile_url = base_url + 'getfile.php?url=' + escape(url) + '&el=' + escape(el.id); // Do Ajax ajax_do (getfile_url); return true; }