Visualizzazione dei risultati da 1 a 4 su 4

Discussione: ajax request a PHP

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    ajax request a PHP

    Sto cercando di realizzare una pagina, in cui una parte dei contenuti venga caricata - tramite richiesta ad una pagina .php - in base alla selezione fatta dall'utente.
    Quindi, ho questo codice JS:
    Codice PHP:
    <script language="JavaScript" type="text/JavaScript">
    function 
    createRequestObject() { 
    var 
    ro
    var 
    browser navigator.appName
    if (
    browser == "Microsoft Internet Explorer") { 
    ro = new ActiveXObject("Microsoft.XMLHTTP"); 
    } else { 
    ro = new XMLHttpRequest(); 

    return 
    ro

    var 
    http createRequestObject(); 
    function 
    sndReq(action) { 
    http.open('get''loadata.php?action='+action); 
    http.onreadystatechange handleResponse
    http.send(null); 

    function 
    handleResponse() { 
    if (
    http.readyState == 4) { 
    var 
    response http.responseText
    var 
    update = new Array(); 
    var 
    loadata 'loadata';
    update document.getElementById(loadata).innerHTML update[0]; 
        } 
    }
    </script> 
    Nella pagina, ho questo HTML:
    Codice PHP:
    [url="javascript:sndReq('full')"][b]international[/b][/url

    [
    url="javascript:sndReq('eu')"][b]europe[/b][/url

    [
    url="javascript:sndReq('am')"][b]america[/b][/url

    [
    url="javascript:sndReq('as')"][b]asia[/b][/url

    [
    url="javascript:sndReq('au')"][b]australia[/b][/url

    [
    url="javascript:sndReq('af')"][b]africa[/b][/url

    <
    div id="loadata" style="position:absolute;top:150;left:15;width:720;height:303; overflow:auto; padding:3"></div
    Mentre la pagina .php richiamata contiene questo codice:
    Codice PHP:
    require "config.php";
    switch(
    $_REQUEST['action']) {
              case 
    'full'$loc "full";
              case 
    'eu'$loc "eu";
              case 
    'am'$loc "am";
              case 
    'as'$loc "as";
              case 
    'au'$loc "au";
              case 
    'af'$loc "af";
            echo 
    "[i]<font color=\"#0279d1\">This is the last 10 news, selected by location: [b]" $loc "[/b]</font>[/i]
    "
    ;
    $link mysql_connect($host$dbuser$dbpass)
        or die(
    "Impossibile connettersi al database");
    mysql_select_db($dbname)
        or die(
    "Impossibile selezionare il database");    
            
    $result mysql_query("SELECT * FROM `news` WHERE `location` = '$loc' ORDER BY `news_id` DESC LIMIT 10");
            while (
    $row mysql_fetch_array($result)) {
            
    $tit $row["title"];
            
    $tit strtoupper($tit);
            echo 
    "<hr>[b]<font color=\"#0279d1\">" $tit "</font>[/b]
    "
    ;
            echo 
    $row["text"] . "
    "
    ;
            
    $mail $row["email"];
            if (
    $mail !== "") {
            
    $mail strtolower($mail);
            echo 
    "E-mail: [b]<a href=\"mailto:" $mail "\">" $mail "</a>[/b]
    "
    ;
            }
            
    $link $row["link"];
            if (
    $link !== "") {
            
    $link strtolower($link);
            echo 
    "Web: [b]<a href=\"http://" $link "\" target=\"_blank\">" $link "</a>[/b]
    "
    ;
            }
            
    $start $row["start"];
            if (
    $start !== "") {
            echo 
    "Opening: [b]<font color=\"#0279d1\">" $start "</font>[/b]
    "
    ;
            }
            
    $dead $row["deadline"];
            if (
    $dead !== "") {
            echo 
    "Deadline: [b]<font color=\"#0279d1\">" $dead "</font>[/b]
    "
    ;
            }
            echo 
    "
    <font size=\"-1\">Location: [b]<font color=\"#FF0000\">" 
    $row["location"] . "</font>[/b]</font>
    "
    ;
            echo 
    "<font size=\"-1\">Tag: [b]<font color=\"#FF0000\">" $row["tag"] . "</font>[/b]</font>
    "
    ;
            echo 
    "<font size=\"-1\">kind: [b]<font color=\"#FF0000\">" $row["kind"] . "</font>[/b]</font>
    "
    ;
            }
            echo 
    "

    "
    ;
                } 
    Però, quando vado a fare un test, cliccando uno qualunque dei link predisposti mi da come risultato undefined.
    É la prima volta che mi cimento con l'interfacciamento AJAX/PHP, quindi è molto probabile che stia facendo qualche fesseria...

    Qualcuno sa darmi una mano?
    metatad
    graphic & web design

  2. #2

    Risolto ...

    Ciao ho trovato degli errori sia nel JavaScript, nell'HTML che nel PHP .
    nel JS :
    Codice PHP:
    function handleResponse() {
                      if (
    http.readyState == 4) {
                      var 
    response http.responseText;
                      var 
    update = new Array();
                      var 
    loadata 'loadata';
                      
    update document.getElementById(loadata).innerHTML update[0];

    non ho ben chiaro a cosa ti serva l'Array update visto che già ti trovi tutto in http.responseText;

    in ogni caso : update = document.getElementById(loadata).innerHTML = update[0]; ti darà sempre undefined perchè si assegna da sinistra a destra, quindi in questo caso assegni update[0] che è indefinito come valore a document.getElementById(loadata).innerHTML e poi a sua volta ri assegni il tutto a update.

    consiglierei di riscrivere la riga come
    codice:
    document.getElementById(loadata).innerHTML = response;
    poi nell'HTML non puoi usare
    Codice PHP:
    <a href="java-script:sndReq('full')">..... 
    ma bensì
    Codice PHP:
    <a href="[COLOR=green]javascript[/COLOR]:sndReq('full')">..... 
    Nel PHP poi lo switch è scritto male, dovrebbe essere qualcosa del genere :
    Codice PHP:
    switch($_REQUEST['action']) 
        {
        case 
    'full'$loc "full";break;
        case 
    'eu'$loc "eu";break;
        case 
    'am'$loc "am";break;
        case 
    'as'$loc "as";break;
        case 
    'au'$loc "au";break;
        case 
    'af'$loc "af";break;
        };
        echo 
    "[i]<font color=\"#0279d1\">This is the last 10 news, selected by location: [b]" $loc "[/b]</font>[/i]
     ........."

    Cioè fare seguire ad ogni case un break altrimenti eseguirai in ogni caso tutti i case. Poi chiudere lo switch e proseguire col codice normalmente.....

    Ciao spero di averti dato una mano.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Many thanks!...
    metatad
    graphic & web design

  4. #4
    function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if (browser == "Microsoft Internet Explorer") {
    ro = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
    ro = new XMLHttpRequest();
    }
    return ro;
    }


    ... peccato che IE7 ha anche lui XMLHttpRequest ...
    codice:
    function createRequestObject(){
    	return	window.XMLHttpRequest ?
    		new XMLHttpRequest : 
    		new ActiveXObject("Microsoft.XMLHTTP")
    };
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.