Bonjour, je suis nouveau sur JSON. Ma question est de savoir comment transmettre des données JSON à des services Web reposants via ajax?
Aidez-moi, s'il vous plaît.
J'ai essayé en suivant le code mais je n'en suis pas sûr
MA PAGE D'INDEX
<script type="text/javascript">
$(document).ready(function(){
var uname = document.getElementById("uname").value();
var password = document.getElementById("pwd").value();
$('#ok').click(function(){
$.ajax({
url:'http://localhost:8090/LoginAuthRWS/rest/orders',
type:'post',
dataType: 'Jsondemo',
success: function(data) {
$('#name').val(data.name);
$('#email').val(data.email);
var JSONObject= {
"uname":uname,
"password":password
};
}
});
});
});
</script>
var JSONObject= {"uname":uname, "password":password };
var jsonData = JSON.parse( JSONObject );
var request = $.ajax({
url: "rest/orders",
type: "POST",
data: jsonData,
dataType: "json"
});
Problèmes avec votre code:
.value
est une propriété et non une fonctiondata
de $.ajax
Jsondemo
vous devez utiliser JSON
data
n'est pas JSON, vous pouvez utiliser $.parseJSON
pour la convertir en JSON.Code complet
$(document).ready(function(){
$('#ok').click(function(){
var uname = document.getElementById("uname").value;
var password = document.getElementById("pwd").value;
var JSONObject= {
"uname":uname,
"password":password
};
$.ajax({
url:'http://localhost:8090/LoginAuthRWS/rest/orders',
type:'post',
data : JSONObject,
dataType: 'JSON',
success: function(data) {
var jsonData = $.parseJSON(data); //if data is not json
$('#name').val(jsonData.name);
$('#email').val(jsonData.email);
}
});
});
});
Vous voulez faire quelque chose comme ça:
$('#ok').click(function(){
$.ajax({
url:'http://localhost:8090/LoginAuthRWS/rest/orders',
type:'post',
dataType: 'json',
data: { name: "John", location: "Boston" }
success: function(data) {
response = $.parseJSON(data);
$('#name').val(response.name);
$('#email').val(response.email);
}
});
});
Quelques points à noter:
dataType
devrait être presque toujours xml
ou json
. Parfois, JQuery peut deviner correctement si vous ne fournissez rien. Mais cela doit être une chose réelle.data
. Notez que le type de données correspond à la valeur dans dataType
. Notez également que vous pouvez utiliser la méthode $.post
pour créer une publication beaucoup plus simple avec JQuery.data
du rappel de succès doit d'abord être analysé en tant que JSON (en supposant que ce soit ce qui revient), car il est de type PlainObject
comme décrit here . C'est ce que $.parseJSON
fait. Une fois que vous avez fait cela, vous pouvez naviguer dans l’arbre JSON autant que nécessaire pour faire ce que vous devez faire. Vous pourrez peut-être vous en sortir sans le faire cependant.J'espère que cela pourra aider.
Valeurs possibles dataType
: xml
, json
, script
ou html
Essayez ceci:
var dataToServer = {
uname : document.getElementById("uname").value,
document.getElementById("pwd").value
};
$.ajax({
url:'http://localhost:8090/LoginAuthRWS/rest/orders',
type:'post', // or put
contentType: 'application/json', // type of data
data: JSON.stringify(dataToServer) // make JSON string
dataType: 'json', // type of return result
success: function(data) {
$('#name').val(data.name);
$('#email').val(data.email);
}
});
Pour transmettre les valeurs aux services Web, Ajax a data attribut.
<script type="text/javascript">
$(document).ready(function(){
var uname = document.getElementById("uname").value;
var password = document.getElementById("pwd").value;
$('#ok').click(function(){
$.ajax({
url:'http://localhost:8090/LoginAuthRWS/rest/orders',
type:'post',
dataType: 'Json',
data:{
uname:uname,
password:password
},
success: function(data) {
$('#name').val(data.name);
$('#email').val(data.email);
}
});
});
});
</script>
Vous pouvez transmettre les données JSON en tant que corps de requête comme ceci:
var JSONObject= {"uname":uname, "password":password };
$.ajax({
url : env + 'rest/orders',
type : 'POST',
headers: {
'Content-Type':'application/json'
},
data : JSON.stringify(JSONObject),
dataType : "json",
});