Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    26

    Richiesta asincrona non funzionante in locale

    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 è:
    codice:
    <script type="text/javascript" src="http://localhost/demo/test/getfile.php?url=http%3A//localhost/demo/test/page1.php&el=contentdiv"> 1Failed to load source for: http://localhost/demo/test/getfile.p...&el=contentdiv </script>
    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; }

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ma la pagina, quella che effettua la richiesta, si trova in localhost e la esegui da localhost?
    altrimenti sono 2 domini diversi e ajax non puo' funzionare

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma la chiama alla funzione ajax dove?
    Consiglio: non tutti conoscono il php (come il sotto scritto) pertanto mettere script/codice php potrebbe confondere.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    26
    @Xinod: si, la pagina chiamante si trova anch'essa in localhost (anzi, hanno proprio lo stesso path, sono nella stessa dir)

    @cavicchiandrea: la ajax_get si trova nella index.html, nell'onclick.
    ho messo anche il codice php per completezza, cosicché da dare una visione globale a tutti e avere più successo nel trovare qualcuno che avesse un'intuizione per la risoluzione del problema... o almeno così spero

  5. #5

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    26
    mi butta fuori l'errore su ff, ie, e chrome. tutti quelli che ho testato.

  7. #7
    ah ok mi era venuto in mente che IE blocca js in locale, invece non è quello

    mandami lo zip via mail (gmail) dai, nel pomeriggio ci do un'occhiata

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ajax funziona solo se le pagine sono ospitate su un server web reale... richiamarle cliccando semplicemente sul file in esplora risorse non puo' funzionare: in quel caso il protocollo utilizzato e' file: mentre ajax necessita di http:

    Tu hai un server web sul pc locale, vero?

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    oddio, dovrebbe essere sufficientemente sgamato da averlo...

    comunque l'ho provato in locale e funzia... anche se non fa una richiesta AJAX (XHR... insomma facendo così non spedisce l'header corretto ) come pensavo prima di guardare il codice

  10. #10
    ok ringraziamo tutti ma abbiamo appurato che è un errore del suo PHP in locale non impostato correttamente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.