2011-11-01 14 views
8

Mi sono tormentato e ho cercato su google per quasi tutto il giorno sul perché questo non funzionasse. Come esperimento per migliorare il mio sito stavo verificando un tutorial qui http://tutorialzine.com/2009/09/simple-ajax-website-jquery/ la più importante della sezione ajax/jquery.Cercando di ottenere PHP per leggere AJAX post

Fondamentalmente, il POST di questo tutorial funziona con i numeri di pagina, tuttavia ho cercato di convertirlo per utilizzare invece i nomi di pagina. Quindi ci vorrebbe #! Home (hashbangs per implementare la compatibilità con Google in un secondo momento) da un href e php potrebbe analizzarlo come "home.html" e caricarlo nel contenuto div. Per ragioni al di fuori di me, semplicemente non funzionerà. Vi posto le sezioni di codice ho cercato di modificare a mio favore:

dal caricatore javascript (solo la parte terminale, che ho modificato):

var datastring=url.replace('#!',''); //strip the #page part of the hash and leave only the page number 

$('#loading').css('visibility','visible'); //show the rotating gif animation 

$.ajax({ //create an ajax request to load_page.php 
    type: "POST", 
    url: "load_file.php", 
    data: datastring, //with the page number as a parameter 
    dataType: "html", //expect html to be returned 
    async: false, 
    success: function(msg){ 

     if(parseInt(msg)!=0) //if no errors 
     { 
      $('#content').html(msg); //load the returned html into pageContet 
      $('#loading').css('visibility','hidden'); //and hide the rotating gif 
     } 
    } 

}); 

E l'intero file php:

<?php 
$url = $_POST['datastring']; 

if(file_exists(''.$url.'.html')) 
echo file_get_contents(''.$url.'.html'); 

else echo 'There is no such page!'; 

?> 

Volevo imparare da solo e capirlo, ma sinceramente non capisco:/Non ci sono problemi di dominio incrociato per quanto posso dire. Qualcuno sa cosa mi manca? Capito che ci chiederei perché è probabile che sia più visitato del sito di quel tutorial, anche se trovo una soluzione andrò da quella parte e la pubblicherò nei commenti così che altri possano evitare il mio dolore. XD

+0

Qual è il messaggio di errore hai trovato? –

+1

Nello spirito di aiutarti a imparare da solo, un suggerimento: la richiesta invia quello che pensi che sia, e stai accedendo a ciò che pensi di essere nel php? Controlla i documenti .ajax, usa firebug/etc. per verificare la richiesta e eseguire il debug dei parametri/valori della richiesta php :) –

+0

Immagino che ti diranno solo :) –

risposta

6

È necessario passare i dati POST come chiave, coppia di valori.

Provate a cambiare i vostri dati a questo:

data: "datastring="+datastring 
+0

Ahhhh questo è tutto, non so se l'avrei capito da secoli .. eh. Grazie! –

0

Il tuo $_POST chiede la chiave datastring, ma non riesco a vederti inviarlo con la tua AJAX.

Nella tua jQuery AJAX provare a cambiare:

data: datastring 

A:

data: 'datastring=' + datastring 
1

Lei non è l'impostazione del parametro datastring che il file PHP sta cercando.

Il file js:

var datastring=url.replace('#!',''); //strip the #page part of the hash and leave only the page number 

$('#loading').css('visibility','visible'); //show the rotating gif animation 

$.ajax({ //create an ajax request to load_page.php 
    type: "POST", 
    url: "load_file.php", 
    data: 'datastring='+datastring, //with the page number as a parameter 
    dataType: "html", //expect html to be returned 
    async: false, 
    success: function(msg){ 

     if(parseInt(msg)!=0) //if no errors 
     { 
      $('#content').html(msg); //load the returned html into pageContet 
      $('#loading').css('visibility','hidden'); //and hide the rotating gif 
     } 
    } 

}); 

Il file php:

<?php 
$url = $_REQUEST['datastring']; 
echo $url; 

if(file_exists(''.$url.'.html')) 
echo file_get_contents(''.$url.'.html'); 

else echo 'There is no such page!'; 

?>