Estoy tratando de poner algunos datos con el formato JSON a través de Ajax con jQuery a un servidor. Mi código es este:

$.ajax({
    type: "PUT",
    url: myURL,
    contentType: "application/json",
    data: {"data": "mydata"}
});

Pero en el lado del servidor, voy a recibir un data=mydata cadena, en lugar de la esperada JSON. Firebug me dice lo mismo.

Donde está el error?

  • ¿Qué estás usando en el lado del servidor?
  • Yo uso Couchdb en la que se espera JSON.
  • AJAX está disponible en todos los principales navegadores. HTTP PUT no lo es. Así que en este caso, está bien (se recomienda, incluso) para el uso de PONER.
  • La adición de la opción dataType: «json», podrían ayudar a salir de aquí.
InformationsquelleAutor Juri Glass | 2009-11-17

3 Comentarios

  1. 53

    Creo que los datos debe ser una Cadena. Los objetos se convierten en cadenas de consulta que es lo que estamos viendo aquí.

    Puede utilizar el JSON.stringify(obj) método para convertir el Objeto en una Cadena. El código para el objeto JSON disponible en: https://github.com/douglascrockford/JSON-js/blob/master/json2.js.

    Alternativamente, acaba de pasar el código que se está utilizando para crear el objeto como una Cadena literal, pero me imagino que esto es sólo un ejemplo, y usted desea codificar algún objeto que ya ha creado.

    • Este es el camino @Juri debe ir si quiere JSON en el servidor. Yo uso el json2.js la biblioteca todo el tiempo y funciona muy bien.
    • sería bueno si jQuery sería stringify los datos, tal y como lo hace con el POST.
    • Actualizado enlace: github.com/douglascrockford/JSON-js/blob/master/json2.js
  2. 31

    Si usted siempre tiene que enviar JSON en su aplicación, entonces usted puede simplemente ejecutar esto en algún lugar en el init y, a continuación, utilizar predeterminado $.ajax llame como en tu ejemplo, y siempre va a serializar como una cadena JSON en lugar de el Ajax por defecto de la cadena de consulta.

    Aquí uso el objeto JSON se ha mencionado anteriormente:

    $.ajaxSetup({
        contentType : 'application/json',
        processData : false
    });
    $.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
        if (options.data){
            options.data=JSON.stringify(options.data);
        }
    });
  3. 1
    //url: this is a reference to the XML, where you need to define the mapping.
    //<entry key="/getEmpDetails/transEfileGenerate.app">
    //<bean class="com.adp.ems.framework.spring.MappingItem" p:delegate-ref="efilePageDelegate"
    //p:action="passJSONObjectAndGetWebServiceOutput" />
    
    //str1 is the input JSON that you need to pass... Ajax will automatically take care to get the response.
    //</entry>
    
    var kw = {
        url : "getEmpDetails/transEfileGenerate.app",
        timeout : 30000,
        handleAs : "json",
        sync: false,
        putData : str1,
        headers: { "Content-Type": "application/json"},
        load : function(result) {
    },

Dejar respuesta

Please enter your comment!
Please enter your name here