2010-04-06 41 views
15

Tengo una función jquery-ajax que envía datos a un script php y el problema es con el valor devuelto, devuelve toda la página en lugar de un valor único.jQuery Ajax devuelve toda la página

Gracias por su tiempo y ayuda.

$("#ajaxBtn").click(function(){ 
var inputText = $("#testText").val(); 

$.ajax({ type: "POST", 
url: "index.php", 
data: "testAjax="+inputText, 
dataType: "html", 
success: function(html){ 
alert(html); 
} 
}); 
});   
+0

¿Cuál es el valor de retorno que espera? JSON, texto, XML, etc. ...? Supongo que tiene algo que ver con tu script PHP, por lo que sería útil si lo publicas. –

+1

bien, aquí está el código:?

+0

Sé que esto es dos años después de ese hecho, pero me estoy encontrando con este mismo problema. Necesito objetos persistentes, así que pensé que una llamada ajax a la misma página sería suficiente. Lamentablemente no, obtengo toda la página como respuesta. – Dale

Respuesta

28

Así es como funciona. Está solicitando index.php a través de AJAX, por lo que obtendrá lo que sea el contenido de index.php.

Si desea un valor particular, cree una nueva página PHP que genere exactamente ese valor, y solicite los contenidos de esa URL en su lugar.

+0

¡Gracias! Cambié la solicitud a la página "ajax.php" y funciona bien! –

5

Sophia, en su caso, no debe enviar sus datos a un archivo php que, si es visto por un navegador web, muestra una página web. Debe enviar su información a un archivo php que solo devuelve los datos que le gustaría que se devolvieran.

Así que en lugar de "index.php", crea un archivo llamado algo así como "my-ajax-script.php". Ese archivo debe incluir todos los archivos necesarios "include()" para conectarse a la base de datos y sus archivos de función php (es decir, para desinfectar los datos POST). Luego, el archivo debe tener el código que procesa los datos POST, y echo los datos completos con algunas etiquetas html. Esta información se insertará en su DOM existente (marcado HTML).

9

Así que cuando se tiene esto en su index.php al comienzo ?:

<?php 
    if (isset($_POST["testAjax"])) { 
     echo $_POST["testAjax"]; 
    } 
?> 

Si este script está emitiendo aún más el texto a continuación, por supuesto, esto también va a ser recibido por la llamada Ajax. Usted puede poner exit() después de que el eco para evitar que el script desde su elaboración ulterior:

if (isset($_POST["testAjax"])) { 
    echo $_POST["testAjax"]; 
    exit(); 
} 

también utilizan dataType: 'text' como el valor que se devuelva obviamente no es HTML.


O como otros sugieren, cree una nueva página que se encargue de ocuparse de la solicitud de Ajax. Si está haciendo algo más que generar el valor recibido (es decir, operaciones más complejas), debe hacer esto de todos modos.

+0

¡Me has salvado! –

+0

@Felix, me encuentro con este problema similar. ¿Puedes elaborar más sobre tu respuesta? Estoy tomando la entrada del formulario html y pasándolo a la consulta php/mysql. Entonces, había incluido todo en un archivo. ¿Hay una mejor manera de manejar esto? cualquier enlace a un ejemplo ayudará. Gracias – user5249203

+0

Hombre eres un sabor. Ojalá pueda + más de 1 –

Cuestiones relacionadas