type script que parte para llamar llamada insertar incluir hace formas externo etiqueta desde descargar código como codigo archivo javascript jquery ajax

que - llamar javascript desde html



El evento exitoso de Ajax no funciona (12)

Asegúrese de que no está imprimiendo (copiando o imprimiendo) ningún texto / datos antes de generar sus datos formateados JSON en su archivo PHP. Eso podría explicar que obtienes un "200 acertijo", pero tu evento de éxito aún falla en tu javascript. Puede verificar lo que está recibiendo su secuencia de comandos al marcar la sección "Red - Respuesta" en firebug para el POST submit1.php.

Tengo un formulario de registro y estoy usando $.ajax para enviarlo.

Esta es mi solicitud AJAX:

$(document).ready(function() { $("form#regist").submit(function() { var str = $("#regist").serialize(); $.ajax({ type: ''POST'', url: ''submit1.php'', data: $("#regist").serialize(), dataType: ''json'', success: function() { $("#loading").append("<h2>you are here</h2>"); } }); return false; }); });

En mi archivo submit1.php compruebo la existencia de los campos dirección de correo electrónico y nombre de usuario en la base de datos. Deseo mostrar un mensaje de error si ese valor existe sin una actualización de página .

¿Cómo puedo agregar esto a la devolución de llamada exitosa de mi solicitud AJAX?


Aunque el problema ya está resuelto, agrego esto con la esperanza de que ayude a otros.

Cometí el error e intenté usar una función directamente así (éxito: OnSuccess (productID)). Pero primero debe pasar una función anónima:

function callWebService(cartObject) { $.ajax({ type: "POST", url: "http://localhost/AspNetWebService.asmx/YourMethodName", data: cartObject, contentType: "application/x-www-form-urlencoded", dataType: "html", success: function () { OnSuccess(cartObject.productID) }, error: function () { OnError(cartObject.productID) }, complete: function () { // Handle the complete event alert("ajax completed " + cartObject.productID); } }); // end Ajax return false; }

Si no usa una función anónima como contenedor, se llama a OnSuccess incluso si el servicio web devuelve una excepción.


El resultado probablemente no esté en formato JSON, por lo que cuando jQuery intenta analizarlo como tal, falla. Puede detectar el error con error: función de devolución de llamada.

Parece que no necesita JSON en esa función de todos modos, por lo que también puede sacar la fila dataType: ''json'' .


Estaba devolviendo JSON válido, obteniendo una respuesta de 200 en mi devolución de llamada "completa", y pude verlo en la consola de red de Chrome ... PERO no había especificado

dataType: "json"

una vez que lo hice, a diferencia de la "respuesta aceptada", eso realmente solucionó el problema.


Estoy usando XML para llevar el resultado desde php en el servidor a la página web y he tenido el mismo comportamiento.

En mi caso, la razón era que la etiqueta de cierre no coincidía con la etiqueta de apertura.

<?php .... header("Content-Type: text/xml"); echo "<?xml version=/"1.0/" encoding=/"utf-8/"?> <result> <status>$status</status> <OPENING_TAG>$message</CLOSING_TAG> </result>"; ?>


La devolución de llamada de éxito tiene dos argumentos:

success: function (data, textStatus) { }

También asegúrese de que submit1.php establezca el encabezado de tipo de contenido adecuado: application/json


Ponga una alert() en su success devolución de llamada para asegurarse de que se está llamando.

Si no es así, es simplemente porque la solicitud no tuvo éxito en absoluto, a pesar de que logras golpear el servidor. Las causas razonables podrían ser que expire el tiempo de espera o que algo en su código php presente una excepción.

Instala el complemento Firebug para Firefox, si no lo has hecho aún, e inspecciona la devolución de llamada AJAX. Podrá ver la respuesta y si recibe o no una respuesta exitosa (200 OK). También puede poner otra alert() en la devolución de llamada complete , que definitivamente debe invocarse.


Traté de devolver la cadena desde el controlador, pero ¿por qué controlar el regreso al bloque de error no en el éxito de ajax

var sownum="aa"; $.ajax({ type : "POST", contentType : ''application/json; charset=utf-8'', dataType : "JSON", url : ''updateSowDetails.html?sownum='' + sownum, success : function() { alert("Wrong username"); }, error : function(request, status, error) { var val = request.responseText; alert("error"+val); } });


Traté de eliminar la fila dataType y no funcionó para mí. Solucioné el problema usando "completo" en lugar de "éxito" como devolución de llamada. La devolución de llamada exitosa todavía falla en IE, pero dado que mi script se ejecuta y completa de todos modos, eso es todo lo que me importa.

$.ajax({ type: ''POST'', url: ''somescript.php'', data: someData, complete: function(jqXHR) { if(jqXHR.readyState === 4) { ... run some code ... } } });

en jQuery 1.5 también puedes hacerlo así.

var ajax = $.ajax({ type: ''POST'', url: ''somescript.php'', data: ''someData'' }); ajax.complete(function(jqXHR){ if(jqXHR.readyState === 4) { ... run some code ... } });


Tuve el mismo problema sucede porque javascript espera el tipo de datos json al devolver los datos. pero si usa echo o print en su php esta situación ocurre. si usa echo función echo en php para devolver datos, simplemente elimine dataType : "json" funciona bastante bien.


Tuve este problema usando una función ajax para recuperar la contraseña de usuario de Magento. El evento de éxito no fue despedido, entonces me di cuenta de que había dos errores:

  1. El resultado no se devolvió en formato JSON
  2. Estaba intentando convertir una matriz al formato JSON, pero esta matriz no tenía caracteres UTF

Así que cada vez que traté de usar json_eoncde () para codificar la matriz de retorno, la función no funcionaba porque uno de sus índices tenía caracteres no-utf, la mayoría de ellos acentuados en palabras en portugués brasileño.


en mi caso, el error fue que esto estaba en el lado del servidor y por eso estaba devolviendo un html

wp_nonce_field(basename(__FILE__), "mu-meta-box-nonce");