Qual è il tipo di contenuto e il tipo di dati in una richiesta AJAX?

Qual è il tipo di contenuto e il tipo di dati in una richiesta POST? Supponiamo che io abbia questo:

$.ajax({ type : "POST", url : /v1/user, datatype : "application/json", contentType: "text/plain", success : function() { }, error : function(error) { }, 

contentType cosa inviamo? Quindi quello che inviamo nell’esempio sopra è JSON e quello che riceviamo è testo normale? Non capisco davvero.

contentType è il tipo di dati che stai inviando, quindi application/json; charset=utf-8 application/json; charset=utf-8 è comune, così come application/x-www-form-urlencoded; charset=UTF-8 application/x-www-form-urlencoded; charset=UTF-8 , che è l’impostazione predefinita.

dataType è ciò che ti aspetti dal server: json , html , text , ecc. jQuery lo userà per capire come popolare il parametro della funzione riuscita.

Se stai postando qualcosa come:

 {"name":"John Doe"} 

e aspettandomi indietro:

 {"success":true} 

Quindi dovresti avere:

 var data = {"name":"John Doe"} $.ajax({ dataType : "json", contentType: "application/json; charset=utf-8", data : JSON.stringify(data), success : function(result) { alert(result.success); // result is an object which is created from the returned JSON }, }); 

Se ti aspetti ciò che segue:

 
SUCCESS!!!

Quindi dovresti fare:

 var data = {"name":"John Doe"} $.ajax({ dataType : "html", contentType: "application/json; charset=utf-8", data : JSON.stringify(data), success : function(result) { jQuery("#someContainer").html(result); // result is the HTML text }, }); 

Un altro – se vuoi pubblicare:

 name=John&age=34 

Quindi non stringify i dati e fai:

 var data = {"name":"John", "age": 34} $.ajax({ dataType : "html", contentType: "application/x-www-form-urlencoded; charset=UTF-8", // this is the default value, so it's optional data : data, success : function(result) { jQuery("#someContainer").html(result); // result is the HTML text }, }); 

Dalla documentazione di jQuery – http://api.jquery.com/jQuery.ajax/

contentType Quando si inviano dati al server, utilizzare questo tipo di contenuto.

dataType Il tipo di dati che ci si aspetta dal server. Se nessuno è specificato, jQuery proverà a dedurlo in base al tipo MIME della risposta

“testo”: una stringa di testo semplice.

Quindi vuoi contentType essere application/json e dataType come text :

 $.ajax({ type : "POST", url : /v1/user, dataType : "text", contentType: "application/json", data : dataAttribute, success : function() { }, error : function(error) { } }); 

Vedi http://api.jquery.com/jQuery.ajax/ , c’è menzione di tipo di dati e contentType lì.

Sono entrambi utilizzati nella richiesta al server in modo che il server sappia che tipo di dati ricevere / inviare.