2008-10-17 9 views
5

Tengo un formulario, cuando hago clic en el botón enviar, deseo comunicarme con el servidor y obtener algo del servidor para que se muestre en la misma página. Todo debe hacerse de manera AJAX. ¿Cómo hacerlo en Google App Engine? Si es posible, quiero hacerlo en JQuery.Creación de formulario Ajax en Google App Engine

Editar: El ejemplo en code.google.com/appengine/articles/rpc.html no funciona en el formulario.


Editar: El procedimiento rpc doesn't work for form.

+0

Estoy usando el método RPC, y funciona bien. Lo he hecho un poco más robusto ya que lo estoy usando en varias páginas, pero básicamente es el mismo. Entonces, si no funciona, estás haciendo algo mal. Si hay un error en particular, publícalo y tal vez sabré lo que está pasando. – jamtoday

Respuesta

1

Yo agregaría que en Firebug, debería ver su llamada ajax emergente en la consola. Si obtiene la excepción cuando abre esa dirección, hay algo con su código Python. ¿Tal vez no estás mapeando correctamente tus URL?

1

lo he hecho con algo como esto antes en jQuery (no estoy seguro si es la "mejor", pero funciona):

function jsonhandler(data) { 
    // do stuff with the JSON data here 
} 

var doajax = function() { 
    arr = Object(); 
    $("#form_id").children("input,select").each(function() { arr[this.name] = this.value;}); 
    $.getJSON("<page to call with AJAX>", arr, function (data) { jsonhandler(data);}); 
} 

$(document).ready(function() { 
    $("#submit_button_id").replaceWith("<input id=\"sub\" name=\"sub\" type=\"button\" value=\"Submit\">"); 
    $("#sub").click(doajax); 
} 

Puede reemplazar el $ .getJSON con whichever jQuery AJAX function does what you want. Si solo desea mostrar el resultado de la página que está llamando, $ .get es probablemente su mejor opción. Si tiene otros tipos de entrada además de los de entrada y los selecciona en su formulario, también deberá agregarlos a la función de los niños.

7

Puede usar jquery Form plugin para enviar formularios usando ajax. Funciona muy bien

$('#myFormId').submit(function() { 
    // submit the form 
    $(this).ajaxSubmit(); 
    return false; 
});