2008-09-17 21 views
10

He determinado que mi JSON, procedente del servidor, es válida (haciendo la llamada ajax manualmente), pero realmente me gustaría usar JQuery. También he determinado que la URL "post", que se envía al servidor, es correcta, usando Firebug. Sin embargo, la devolución de llamada de error todavía se está desencadenando (parsererror). También probé el tipo de datos: texto.No se puede recibir JSON desde JQuery ajax call

¿Hay otras opciones que deba incluir?

$(function() { 
    $("#submit").bind("click", function() { 
     $.ajax({ 
      type: "post", 
      url: "http://myServer/cgi-bin/broker" , 
      datatype: "json", 
      data: {'start' : start,'end' : end}, 
      error: function(request,error){ 
       alert(error); 
      }, 
      success: function(request) { 
       alert(request.length); 
      } 
     }); // End ajax 
    }); // End bind 
}); // End eventlistener 

Respuesta

19

Aquí están algunas sugerencias Me gustaría probar:

1) la opción 'tipo de datos' que ha especificado que debería ser 'tipo de datos' (mayúsculas y minúsculas creo)

2) tratar de usar la opción 'contentType' como tan:

contentType: "application/json; charset=utf-8" 

no estoy seguro de cuánto que le ayudará como se usa en la solicitud a su puesto url, no en la respuesta. Consulta este artículo para obtener más información: http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax (Está escrito para asp.net, pero puede ser aplicable)

3) Triple comprobar la salida de su mensaje URL y ejecutar a traves de un validador de JSON sólo para estar absolutamente seguro es válido y se puede analizar en un objeto JSON. http://www.jsonlint.com

Espero que algo de esto ayude!

+0

muchas gracias por tomarse el tiempo para responder. era la opción dataType que tenía como tipo de datos –

+7

Solo una nota, establecer dataType en "json" establece automáticamente contentType en "application/json". – bhollis

+0

@BHR +1 correcto de acuerdo con los documentos. Sin embargo, tal vez sea útil tener en cuenta: estoy trabajando con jquery 1.6.4 atm y he encontrado que necesito establecer explícitamente contentType: "application/json; charset = utf-8" – zack

0

El parámetro de datos es incorrecto. Aquí hay un ejemplo que funciona:

datos: {index: ddl.selectedIndex},

Este contructs un objeto con propiedad llamada índice con valor ddl.selectedIndex.

Es necesario eliminar las citas de su línea de parámetro de datos

Buena suerte Un

+0

-1, es una sintaxis perfectamente válida para tener un cadena como nombre de propiedad. En algunas situaciones es obligatorio, por ejemplo, cuando tiene un nombre de propiedad que no sería un nombre de identificador válido en javascript, al citarlo le permitirá darle un valor de todos modos. Un ejemplo común es '" clase "', que debe ser citado ya que es una palabra reservada. En la sintaxis JSON, incluso es un requisito para envolver todos los nombres de propiedades entre comillas dobles. – DarthJDG

1

¿Por qué en lugar de myResultrequest?

success: function(request) { 
       alert(myResult.length); 
      } 
+0

Estoy bastante seguro de que en mi código completo estaba manipulando la solicitud en myResult .... pero lo cambié para que quede más claro ... el problema era que dataType se escribía como 'datatype'. Gracias por el comentario –

Cuestiones relacionadas