web-dev-qa-db-fra.com

jQuery postant JSON

mise à jour: je voudrais passer le var value au serveur

bonjour, même vieux, même vieux ... :)

J'ai un formulaire appelé <form id="testForm" action="javascript:test()"> et une zone de code appelée <code id="testArea"></code>

J'utilise ce code pour stringifier et afficher les données dans la zone de code:

var formData = form2object('testForm');
document.getElementById('testArea').innerHTML = JSON.stringify(formData, null, '\t');
var value = JSON.stringify(formData, null, '\t');

Ce que je veux, c'est envoyer ces données dans un fichier JSON. J'ai travaillé sur ce projet: http://ridegrab.com/profile_old/ et si vous appuyez sur le bouton Submit Query, vous verrez l'en-tête de la page se remplir.

Aussi, je veux utiliser ce script pour envoyer des données:

    function authenticate(userName, password) {
    $.ajax
    ({
        type: "POST",
        //the url where you want to sent the userName and password to
        url: 'username:password@link to the server/update',
        dataType: 'json',
        async: false,
        //json object to sent to the authentication url
        data: '{"userName": "' + userName + '", "password" : "' + password + '"}',
        success: function () {

        alert("Thanks!"); 
        }
    })
}

Encore une fois, tout ce que je veux, c'est pouvoir envoyer ces données JSON au serveur. Mon serveur est configuré pour update or POST les données au bon endroit.

173
Patrioticcow

'data' doit être un objet JavaScript stratifié:

data: JSON.stringify({ "userName": userName, "password" : password })

Pour envoyer votre formData, passez-le à stringify:

data: JSON.stringify(formData)

Certains serveurs nécessitent également le type de contenu application/json:

contentType: 'application/json'

Il existe également une réponse plus détaillée à une question similaire ici: Jquery Ajax Posting json to webservice

197
Kyle Wild

Vous postez JSON comme ça

$.ajax(url, {
    data : JSON.stringify(myJSObject),
    contentType : 'application/json',
    type : 'POST',
    ...

si vous transmettez un objet en tant que settings.data, jQuery le convertira en paramètres de requête et l'enverra par défaut avec le type de données application/x-www-form-urlencoded; charset = UTF-8, probablement pas ce que vous voulez

258
teknopaul

Si vous envoyez cette demande de publication à un autre domaine, vous devriez consulter ce lien.

https://stackoverflow.com/a/1320708/969984

Votre serveur n'accepte pas la demande de publication intersite. La configuration du serveur doit donc être modifiée pour autoriser les requêtes intersites.

2
nizam.sp