2011-11-01 18 views
8

He estado trabajando en mi cerebro y buscando en Google durante casi todo el día sobre por qué esto no funciona. Como un experimento para mejorar mi propio sitio, estaba consultando un tutorial aquí, http://tutorialzine.com/2009/09/simple-ajax-website-jquery/ y, lo más importante, la sección ajax/jquery.Intentando que PHP lea la publicación de AJAX

Básicamente, el POST de ese tutorial funciona con números de página, sin embargo he intentado convertirlo para usar nombres de página. Así que tomaría #! Home (hashbangs para implementar la compatibilidad de google más adelante) desde un href y php podría analizarlo como "home.html" y cargarlo en el div de contenido. Por razones que van más allá de mí, simplemente no funcionará. Voy a publicar las secciones pertinentes del Código he intentado modificar a mi favor:

Desde el cargador de JavaScript (sólo la sección final, que he modificado):

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 
     } 
    } 

}); 

Y todo el archivo php:

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

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

else echo 'There is no such page!'; 

?> 

Quería aprender por mi cuenta y resolver esto, pero la verdad es que no lo entiendo:/No hay ningún problema de dominio cruzado hasta donde yo sé. ¿Alguien sabe lo que me estoy perdiendo? Pensé en preguntar aquí, ya que es probable que esté más recorrido que el sitio de ese tutorial, aunque si encuentro una solución voy a ir allí y publicarlo en los comentarios para que otros puedan evitar mi dolor. XD

+0

Cuál es el mensaje de error que está recibiendo? –

+1

Con el ánimo de ayudarlo a aprender por su cuenta, una sugerencia: ¿está enviando la solicitud lo que cree que es, y está accediendo a lo que cree que es en el php? Mira los documentos .ajax, usa firebug/etc. para verificar la solicitud y depurar los parámetros/valores de la solicitud php :) –

+0

Supongo que solo van a decirte :) –

Respuesta

6

Usted necesita para pasar sus datos POST como una clave, valor par.

trate de cambiar sus datos a esto:

data: "datastring="+datastring 
+0

Ahhhh eso es todo, no sé si lo hubiera averiguado durante años ... je. ¡Gracias! –

0

Su $_POST está pidiendo la clave datastring, pero no puedo ver que lo envíe con su AJAX.

En su jQuery AJAX pruebe a cambiar:

data: datastring 

Para:

data: 'datastring=' + datastring 
1

no está configurando el parámetro datastring que el archivo PHP está buscando.

El archivo 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 
     } 
    } 

}); 

su archivo 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!'; 

?> 
Cuestiones relacionadas