jQuery: devuelve la cadena de respuesta en el ajax de jquery json llamada

Estoy pasando datos en json para mi genéricos controlador de la página GenericHandler.ashx.cs usando jquery, ajax y json como el tipo de datos.

en mi controlador de código que me gustaría volver tabla html en formato de cadena. aquí es complemento de mi código de controlador de

context.Response.ContentType = "text/plain";      
context.Response.Write(sResponse);

donde sResponse contiene <table><tr><td>PropertyName</td><td>PropertyID</td></tr><tr><td>abc</td><td>1</td></tr></table>

mi código jquery (de verificación en línea de comentario en función de error):

  id = { 'PropertyID': id };
    $.ajax("Handlers/GenericHandler.ashx?Type=getProperties",
    {
        type: 'post',
        dataType: 'json',
        cache: false,
        contentType: "application/json",
        data: JSON.stringify(id),
        success: function (data) {
            console.log(data);            
        },
        error: function (xhr, status) {
            console.log(status); //Output as parseError
            console.log(xhr.responseText); //My sResponse string ! But Why Here ?
        }
    });

Mi Pregunta :

  1. Por qué no estoy recibiendo respuesta en el éxito de la función
  2. Es la manera correcta de hacer ? o debo convertir tabla html a un objeto json y luego devolverlo. Y de nuevo la pantalla en formato tabular ?
  • La respuesta no es JSON, así que ¿por qué se establece dataType: 'json'?
  • los datos de la solicitud es en JSON es por eso !
  • Cambio dataType: 'json', a dataType: 'text/plain',
  • m obteniendo el mismo error si puedo cambiar el tipo de datos a texto sin formato
  • Chicos, tengo una pregunta con respecto a este tema. No $.ajax("Handlers/GenericHandler.ashx?Type=getProperties", válida? Podemos utilizar el url atributo como que?
  • No es válido como m no conseguir ningún error

InformationsquelleAutor Shaggy | 2014-06-25

3 Kommentare

  1. 3

    Su respuesta no es válida JSON seno que está regresando de texto sin formato. jQuery está a la espera de la respuesta JSON porque se ha establecido contentType: "application/json"

    Si el resto de su sitio usa JSON como formato de transmisión, a continuación, envolver el HTML como un objeto JSON y devolverlo.

    En su parte final del código, devolver algo que se parece a esto

    {response_html : "<table><tr><td>PropertyName</td><td>PropertyID</td></tr><tr><td>abc</td><td>1</td></tr></table>"}

    Y en su código jQUery, puedes acceder a ella en el éxito de devolución de llamada.

    success: function (data) {
        console.log(data.response_html);            
    },

    NOTA – Usted tendrá que quitar el formato de texto de tipo de contenido desde el backend de código y hacer que JSON.

    • Lo de la «llanura JSON»?
  2. 7

    De jQuery documentación aquí, se puede ver que el dataType parámetro es lo que AJAX se espera como respuesta desde el servidor. El contentType parámetro es lo que se pone en el encabezado en su solicitud para el servidor, de modo que el servidor sabe cómo leer la solicitud.

    Por lo tanto, usted debe cambiar su dataType a «texto» como:

    $.ajax("Handlers/GenericHandler.ashx?Type=getProperties",
    {
        type: 'post',
        cache: false,
        dataType: 'text',
        contentType: "application/json",
        data: JSON.stringify(id),
        success: function (data) {
            console.log(data);            
        },
        error: function (xhr, status) {
            console.log(status);
            console.log(xhr.responseText); 
        }
    });

    Esto me parece útil cuando se alerta de una exitosa INSERCIÓN o ACTUALIZACIÓN de llamadas en una base de datos. Sería extraño para crear y devolver un objeto JSON para tal tarea.

  3. 2

    Si le dices a $.ajax que esperar un JSON, luego de un text/plain respuesta del servidor no es una respuesta válida.

    Con respecto a su segunda pregunta: La forma correcta de hacerlo sería para devolver los datos que desea trabajar, en formato JSON, por ejemplo:

    [
      { "label" : "PropertyName", "value" : "abc" },
      { "label" : "PropertyId", "value" : "1" }
    ]

    Y, a continuación, en el éxito de devolución de llamada de su petición Ajax, trabajar con esos datos para construir su estructura HTML con jQuery.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein