error ejemplos data javascript jquery asp.net ajax json

javascript - ejemplos - jquery ajax get



La solicitud de Ajax devuelve 200 OK, pero se desencadena un evento de error en lugar de éxito (16)

He implementado una solicitud de Ajax en mi sitio web, y estoy llamando al punto final desde una página web. Siempre devuelve 200 OK , pero jQuery ejecuta el evento de error. Probé muchas cosas, pero no pude resolver el problema. Estoy agregando mi código a continuación:

jQuery Code

var row = "1"; var json = "{''TwitterId'':''" + row + "''}"; $.ajax({ type: ''POST'', url: ''Jqueryoperation.aspx?Operation=DeleteRow'', contentType: ''application/json; charset=utf-8'', data: json, dataType: ''json'', cache: false, success: AjaxSucceeded, error: AjaxFailed }); function AjaxSucceeded(result) { alert("hello"); alert(result.d); } function AjaxFailed(result) { alert("hello1"); alert(result.status + '' '' + result.statusText); }

Código C # para JqueryOpeartion.aspx

protected void Page_Load(object sender, EventArgs e) { test(); } private void test() { Response.Write("<script language=''javascript''>alert(''Record Deleted'');</script>"); }

Necesito la cadena ("Record deleted") después de la eliminación exitosa. Puedo eliminar el contenido, pero no recibo este mensaje. ¿Es correcto o estoy haciendo algo mal? ¿Cuál es la forma correcta de resolver este problema?


Esto es solo para el registro, ya que me topé con este post cuando buscaba una solución a mi problema que fuera similar a la de los OP.

En mi caso, se evitó que mi solicitud jQuery Ajax tuviera éxito debido a la política del mismo origen en Chrome. Todo se resolvió cuando modifiqué mi servidor (Node.js) para hacer:

response.writeHead(200, { "Content-Type": "application/json", "Access-Control-Allow-Origin": "http://localhost:8080" });

Literalmente me costó una hora golpearme la cabeza contra la pared. Me siento estupido ...


He enfrentado este problema con una biblioteca de jQuery actualizada. Si el método de servicio no devuelve nada, significa que el tipo de retorno es void .

Luego, en su llamada Ajax, mencione dataType=''text'' .

Se resolverá el problema.


He tenido algo de suerte con el uso de varios jQuery.ajax (tipo de datos separados por jQuery.ajax ) ( jQuery.ajax ). Como en:

$.ajax({ type: ''POST'', url: ''Jqueryoperation.aspx?Operation=DeleteRow'', contentType: ''application/json; charset=utf-8'', data: json, dataType: ''text json'', cache: false, success: AjaxSucceeded, error: AjaxFailed });


Intenta seguir

$.ajax({ type: ''POST'', url: ''Jqueryoperation.aspx?Operation=DeleteRow'', contentType: ''application/json; charset=utf-8'', data: { "Operation" : "DeleteRow", "TwitterId" : 1 }, dataType: ''json'', cache: false, success: AjaxSucceeded, error: AjaxFailed });

O

$.ajax({ type: ''POST'', url: ''Jqueryoperation.aspx?Operation=DeleteRow&TwitterId=1'', contentType: ''application/json; charset=utf-8'', dataType: ''json'', cache: false, success: AjaxSucceeded, error: AjaxFailed });

Utilice comillas dobles en lugar de comillas simples en el objeto JSON. Creo que esto resolverá el problema.


Otra cosa que me estropeó las cosas fue usar localhost lugar de 127.0.0.1 o viceversa. Al parecer, JavaScript no puede manejar las solicitudes de uno a otro.


Reconozco que su página aspx no devuelve un objeto JSON. Tu página debería hacer algo como esto (page_load)

var jSon = new JavaScriptSerializer(); var OutPut = jSon.Serialize(<your object>); Response.Write(OutPut);

Además, intenta cambiar tu AjaxFailed:

function AjaxFailed (XMLHttpRequest, textStatus) { }

textStatus debería darle el tipo de error que está recibiendo.


Si siempre devuelve JSON desde el servidor (no hay respuestas vacías), dataType: ''json'' debería funcionar y contentType no es necesario. Sin embargo, asegúrese de que la salida JSON ...

jQuery AJAX lanzará un ''parseerror'' en JSON válido pero no serializado!


Simplemente tienes que eliminar el dataType: "json" en tu llamada AJAX

$.ajax({ type: ''POST'', url: ''Jqueryoperation.aspx?Operation=DeleteRow'', contentType: ''application/json; charset=utf-8'', data: json, dataType: ''json'', //**** REMOVE THIS LINE ****// cache: false, success: AjaxSucceeded, error: AjaxFailed });


Solo tiene que eliminar dataType: ''json'' de su encabezado si su método de servicio web implementado es nulo.

En este caso, la llamada Ajax no espera tener un tipo de datos de retorno JSON.


Su script exige una devolución en el tipo de datos JSON.

Prueba esto:

private string test() { JavaScriptSerializer js = new JavaScriptSerializer(); return js.Serialize("hello world"); }


Tengo el problema similar, pero cuando intenté eliminar el tipo de datos: ''json'' todavía tengo el problema. Mi error se está ejecutando en lugar del éxito

function cmd(){ var data = JSON.stringify(display1()); $.ajax({ type: ''POST'', url: ''/cmd'', contentType:''application/json; charset=utf-8'', //dataType:"json", data: data, success: function(res){ console.log(''Success in running run_id ajax'') //$.ajax({ // type: "GET", // url: "/runid", // contentType:"application/json; charset=utf-8", // dataType:"json", // data: data, // success:function display_runid(){} // }); }, error: function(req, err){ console.log(''my message: '' + err); } }); }


Tuve el mismo problema. Mi problema era que mi controlador estaba devolviendo un código de estado en lugar de JSON. Asegúrese de que su controlador devuelve algo como:

public JsonResult ActionName(){ // Your code return Json(new { }); }


Use el siguiente código para asegurarse de que la respuesta esté en formato JSON (versión PHP) ...

header(''Content-Type: application/json''); echo json_encode($return_vars); exit;


Yo tuve el mismo problema. Fue porque mi respuesta JSON contiene algunos caracteres especiales y el archivo del servidor no estaba codificado con UTF-8, por lo que la llamada Ajax consideró que no era una respuesta JSON válida.


jQuery.ajax intenta convertir el cuerpo de la respuesta según el parámetro dataType especificado o el encabezado Content-Type enviado por el servidor. Si la conversión falla (por ejemplo, si el JSON / XML no es válido), se desencadena la devolución de llamada de error.

Su código AJAX contiene:

dataType: "json"

En este caso jQuery:

Evalúa la respuesta como JSON y devuelve un objeto JavaScript. […] Los datos JSON se analizan de manera estricta; cualquier JSON con formato incorrecto se rechaza y se produce un error de análisis. […] Una respuesta vacía también es rechazada; el servidor debería devolver una respuesta de nulo o {} en su lugar.

Su código del lado del servidor devuelve un fragmento de código HTML con 200 OK estados 200 OK . jQuery esperaba JSON válido y, por lo tanto, dispara el error de devolución de llamada quejándose de parseerror .

La solución es eliminar el parámetro dataType de su código jQuery y devolver el código del lado del servidor:

Content-Type: application/javascript alert("Record Deleted");

Pero prefiero sugerir devolver una respuesta JSON y mostrar el mensaje dentro de la devolución de llamada correcta:

Content-Type: application/json {"message": "Record deleted"}


Ver esto También es un problema similar. Trabajando lo intenté.

No elimine dataType: ''JSON'',

Nota: solo se hace eco de JSON Formate en el archivo PHP si solo usa php echo su código ajax return 200