AJAX - Actualizar contenido de array en textarea y guardar nuevo valor en variable PHP sin recargar página.

   
Vista:

Actualizar contenido de array en textarea y guardar nuevo valor en variable PHP sin recargar página.

Publicado por JBoY (1 intervención) el 15/04/2015 21:35:42
Buenos días compañeros,

A ver si podéis echarme un cable. Estoy peleando con un formulario para actualizar un array que se está mostrando dentro de un textarea, todo esto sin recargar la página. Es decir, tengo un textarea en el que se muestra el contenido de un array y en el que puedo escribir nuevo contenido que posteriormente quiero que se añada a ese mismo array al hacer click en el botón submit. Aquí el código HTML y PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form name="frmscript" onsubmit="return false;">
    <?php
    if($_POST){
 
        $script = json_decode($_POST["script"]);
 
    }
 
    ?>
 
    <textarea class="ta_scripts" name="ta_scripts"><?php
        foreach ($script as $script_launcher){
            echo $script_launcher."\r\n";
        }?></textarea><br><br>
 
    <input type="button" name="execscript" value="Ejecuta el script" id="submit" onClick="addtext();" />
</form>

Como veis, dentro del textarea tengo el array $script, mostrando su contenido al usuario. Al escribir o modificar el contenido mostrado dentro del textarea y pulsar el botón execscript, esos cambios deberían salvarse en $script. Supongo que para ello debo utilizar AJAX, en concreto estoy intentándolo con JSon pero me es imposible ya que no domino del todo el lenguaje. Os dejo el código por si me podéis echar una manilla y así de paso aprendo como hacerlo correctamente para la próxima vez que me encuentre un caso similar:

Aquí el código AJAX:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function addtext() {
    var script = document.frmscript.ta_scripts.value;
    document.frmscript.ta_scripts.value = "";
    document.frmscript.ta_scripts.value += script;
    script = JSON.encode(script);
 
 
      var miAjax = new Request({
    url: "index4.php",
    data: "script=" + script,
    onSuccess: function(textoRespuesta){
        $('resultado').set("html", textoRespuesta);
      },
      onFailure: function(){
        $('resultado').set("html", "fallo en la conexión Ajax");
    }
    })
      miAjax.send();

Al clicar el botón, este código debería limpiar el valor antiguo del textarea y actualizar el contenido de la variable "script" con las modificaciones que el usuario hiciera en dicho textarea. Enviar la variable "script" a php y allí mostrarla ya modificada dentro del textarea.

Muchas gracias de antemano por vuestro tiempo y ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vainas

Actualizar contenido de array en textarea y guardar nuevo valor en variable PHP sin recargar página.

Publicado por Vainas (71 intervenciones) el 17/04/2015 16:25:01
Buenas:

Hay varias cosas que te tienes que plantear antes de comenzar a echar codigo sin mas:

1. Esta linea "var miAjax = new Request" me dice que estas usando la libreria Prototype (o MooTools o alguna otra que no conozca). la pregunta es ¿Tienes pensado usar una libreria para manejar Ajax? Podrias usar jQuery o podrias hacerlo sin libreria pero no te lo recomiendo por compatibilidad de navegadores.

2. Obtener datos y enviar datos: Tienes que definir como quieres enviar los datos al servidor (Mediante POST son pares de claves "clave=valor", tambien puedes usar XML y JSON). Te recomendaria que usaras pares de claves ya que son mas rapidos de manejar en PHP, se puede acceder a ellos con la variable $_POST['clave'] donde clave sera el input o textarea en el formulario. Para recibir datos lo normal es JSON pero puedes usar XML y HTML.

Yo primero pensaria como envio los valores sin Ajax, es decir: Donde vas a guardar los valores cuando lleguen al servidor? van a parar a una bbdd o un archivo?. No los puedes guardar en una variable en el servidor ya que cuando termine el script el valor se destruira y no habras logrado nada.

Una vez que tienes pensado enviarlos sin ajax ahora imagina que con ajax vas a hacer la misma llamada pero enviado solo lo que quieres (o todo) pero sin que se refresque la pagina. El servidor puede que devuelve algo o no, pero en todo caso ese algo no va a ser un html entero sino una parte.

Ahora no tengo mucho tiempo, espero tu respuesta y cuando tengas algo mas definido esto se puede hablar de codigo.

Espero que te sirva. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar