2013-04-02 17 views
6

Qualcuno può darmi un esempio su come utilizzare la proprietà contents?jQuery.ajax come utilizzare la proprietà dei contenuti

$.ajax(
{ 
    contents : {...} 
} 
propria documentazione

di jQuery afferma solo le seguenti su di esso:

contenuti

An object of string/regular-expression pairs that determine how jQuery will parse the response, given its content type

risposta

5

Da http://api.jquery.com/jQuery.ajax/:

$ .ajax) convertitori (mappatura supporto dati t yves ad altri tipi di dati. Se, invece, si desidera mappare un tipo di dati personalizzato per un tipo noto (ad esempio JSON), è necessario aggiungere un corrispondenza tra la risposta Content-Type e il tipo di dati reale utilizzando l'opzione di contenuti:

$.ajaxSetup({ 
    contents: { 
    mycustomtype: /mycustomtype/ 
    }, 
    converters: { 
    "mycustomtype json": function (result) { 
     // do stuff 
     return newresult; 
    } 
    } 
}); 

Quindi, questo significa che il tipo di dati della tua risposta del server potrebbe essere mycustomtype. E quando la chiamata AJAX riceve i dati, si vedrà che il suo tipo di dati è mycustomtype e corrisponde alla regex abbiamo impostato (in contenuti): /mycustomtype/ e getta i dati nel convertitore abbiamo specificato, ad esempio. mycustomtype json() tenterà di convertire i dati in json.

di approfondire le convertitori:

Il converters["mycustomtype json"] significa che la funzione specificata qui verrà eseguito quando si desidera convertire mycustomtype in formato json, in modo che il contenuto di tale funzione effettua il parsing che restituirà JSON. È possibile specificare altri tipi di conversione es.

converters: { 
    "mycustomtype json": converterFromCustomTypeToJson,  // mycustomtype -> json 
    "mycustomtype jsonp": converterFromCustomTypeToJsonP, // mycustomtype -> jsonp 
    "mycustomtype text": converterFromCustomTypeToText,  // mycustomtype -> text 
    "text mycustomtype": converterFromTextToCustomType  // text -> mycustomtype 
} 

E si potrebbe scrivere i propri convertitore funzioni:

var converterFromCustomTypeToJson = function(result) { 
     var jsonResult = ... 
     /* do conversion to JSON */ 
     return jsonResult; 
    }, 
    converterFromCustomTypeToJsonP = function(result) { 
     var jsonPResult = ... 
     /* do conversion to JSONP */ 
     return jsonPResult; 
    }, 
    converterFromCustomTypeToText = function(result) { 
     var textResult = ... 
     /* do conversion to text */ 
     return textResult; 
    }, 
    converterFromTextToCustomType = function(result) { 
     var customResult = ... 
     /* do conversion to mycustomtype */ 
     return customResult; 
    }; 

Si piacerebbe anche vogliono evitare confusione con i convertitori di default, che sono:

{ 
    "* text": window.String, 
    "text html": true, 
    "text json": jQuery.parseJSON, 
    "text xml": jQuery.parseXML 
} 
+0

puoi spiegare meglio la parte "convertitori" ?? –

2

Il contents è usato per definire nuovi tipi di dati. Esistono 4 tipi di dati predefiniti definiti in jQuery: xml, json, script e html. Se dqataType non è specificato per una chiamata ajax, jQuery proverà a dedurlo in base al tipo MIME della risposta. Quando si definisce un nuovo tipo di dati utilizzando contents, è necessario specificare un'espressione regolare, che verrà utilizzata per dedurre il dataType personalizzato dal tipo MIME della risposta.

Per ex per definire un CSV dataType che altrimenti verrà analizzato come testo:

$.ajaxSetup({ 
    // for: text/csv or application/csv 
    contents: { 
    csv: /csv/ 
    } 
}); 

contents viene utilizzato in combinazione con i convertitori:

Per trasformare CSV in JSON definire un convertitore personalizzato:

$.ajaxSetup({ 
    contents: { 
    csv: /csv/ 
    }, 
    converters: { 
    "csv json": function (result) { 
     // parse csv here 
     return jsonresult; 
    } 
    } 
}); 
Problemi correlati