web-dev-qa-db-fra.com

jQuery: Comment envoyer des données JSON dans AJAX post?

Je travaille sur AJAX. Je crée une demande de publication comme celle-ci:

   $.ajax({
    'url':'http://localhost/api/create/',
    'method':'POST',
    'dataType': 'json',
    'contentType': 'application/json',
    'data':{
        "refId":585,
        "phone":"0674444444"
     },
     'success': getHandlingStatus

  });

Lorsque ma demande est exécutée, les données sont transmises en tant que paramètres dans ma charge utile de demande et non en tant que données JSON. Voici ma charge utile de demande:

refId=585&phone=0674444444

Je veux envoyer des données au format json comme:

{
"refId":"585",
"phone:"0674444444"
}

Qu'est-ce qui me manque, s'il vous plaît?

5
Pracede

Vous devez utiliser JSON.stringify pour convertir les données en JSON avec l'option ProcessData définie sur false. Selon la documentation de jquery:

Par défaut, les données transmises à l'option data en tant qu'objet (techniquement, autre chose qu'une chaîne) seront traitées et transformées en une chaîne de requête, correspondant au type de contenu par défaut "application/x-www-form-urlencoded" . Si vous souhaitez envoyer un DOMDocument ou d'autres données non traitées, définissez cette option sur false.

$.ajax({
'url':'http://localhost/api/create/',
'method':'POST',
'dataType': 'json',
 processData: false,
'contentType': 'application/json',
'data':JSON.stringify({
    "refId":585,
    "phone":"0674444444"
 }),
 'success': getHandlingStatus

});
9
Ahmad

Vous devez utiliser JSON.stringify() pour convertir les données au format JSON. Voir documentation .

 $.ajax({
'url':'http://localhost/api/create/',
'method':'POST',
'dataType': 'json',
'contentType': 'application/json',
'data':JSON.stringify({
    "refId":585,
    "phone":"0674444444"
 }),
 'success': getHandlingStatus
});
0
user10047212
Have you tried the following
 $ .ajax ({
 'url': 'http: // localhost/api/create /', 
 'méthode': 'POST', 
 'dataType': 'json', 
 'contentType': 'application/json', 
 'data': JSON.stringify ({
 "refId": 585, 
 "téléphone": "0674444444" 
}), 
 'processData': faux, 
 'succès': getHandlingStatus 
 
} ); 

Il y avait une virgule manquante après processData: false

0
shashwat_247