mise à jour: je voudrais transmettre 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 Submit Query
bouton, vous verrez la tête de la page se remplir.
Je veux aussi utiliser ce morceau de 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.
data
pardata: value,
... !! ??error
fonction, est-elle appelée? Si oui, avec quelle erreur?Réponses:
'data' doit être un objet JavaScript stringifié:
data: JSON.stringify({ "userName": userName, "password" : password })
Pour envoyer votre
formData
, transmettez-le àstringify
:data: JSON.stringify(formData)
Certains serveurs nécessitent également le
application/json
type de contenu:contentType: 'application/json'
Il y a aussi une réponse plus détaillée à une question similaire ici: Jquery Ajax Posting json to webservice
la source
{ foo: [1,2,3], bar: 'baz' }
. Cela sera encodé sous la formefoo%5B%5D=1&foo%5B%5D=2&foo%5B%5D=3&bar=baz
(sans échappement, c'estfoo[]=1&foo[]=2&foo[]=3&bar=baz
). Probablement pas ce que vous voulez côté serveur.Vous publiez du JSON comme ça
$.ajax(url, { data : JSON.stringify(myJSObject), contentType : 'application/json', type : 'POST', ...
si vous passez un objet en tant que settings.data jQuery le convertira en paramètres de requête et par défaut l'envoyer avec le type de données application / x-www-form-urlencoded; charset = UTF-8, probablement pas ce que vous voulez
la source
data
de toute façon pas une chaîneSi vous envoyez cette demande de publication à un domaine croisé, 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.
la source