json


“Missing required parameter: titre”


I'm learning javascript, and particulary AJAX and JSON.
I have an exercise and have to post the result of a form with ajaxPost.
Despite of i have a JSON object, validate with jsonlint , i have this error and since 3 days i work on it but...nothing i try works :(
My codes :
Javascript
var listeLiens = [
{
titre: "So Foot",
url: "http://sofoot.com",
auteur: "yann.usaille"
},
{
titre: "Guide d'autodéfense numérique",
url: "http://guide.boum.org",
auteur: "paulochon"
},
{
titre: "L'encyclopédie en ligne Wikipedia",
url: "http://Wikipedia.org",
auteur: "annie.zette"
}
];
// Crée et renvoie un élément DOM affichant les données d'un lien
// Le paramètre lien est un objet JS représentant un lien
function creerElementLien(lien) {
var titreElt = document.createElement("a");
titreElt.href = lien.url;
titreElt.style.color = "#428bca";
titreElt.style.textDecoration = "none";
titreElt.style.marginRight = "5px";
titreElt.appendChild(document.createTextNode(lien.titre));
var urlElt = document.createElement("span");
urlElt.appendChild(document.createTextNode(lien.url));
// Cette ligne contient le titre et l'URL du lien
var ligneTitreElt = document.createElement("h4");
ligneTitreElt.style.margin = "0px";
ligneTitreElt.appendChild(titreElt);
ligneTitreElt.appendChild(urlElt);
// Cette ligne contient l'auteur
var ligneDetailsElt = document.createElement("span");
ligneDetailsElt.appendChild(document.createTextNode("Ajouté par " + lien.auteur));
var divLienElt = document.createElement("div");
divLienElt.classList.add("lien");
divLienElt.appendChild(ligneTitreElt);
divLienElt.appendChild(ligneDetailsElt);
return divLienElt;
}
var contenuElt = document.getElementById("contenu");
// Parcours de la liste des liens et ajout d'un élément au DOM pour chaque lien
listeLiens.forEach(function (lien) {
var lienElt = creerElementLien(lien);
contenuElt.appendChild(lienElt);
});
// Crée et renvoie un élément DOM de type input
function creerElementInput(placeholder, taille) {
var inputElt = document.createElement("input");
inputElt.type = "text";
inputElt.setAttribute("placeholder", placeholder);
inputElt.setAttribute("size", taille);
inputElt.setAttribute("required", "true");
return inputElt;
}
var ajouterLienElt = document.getElementById("ajoutLien");
// Gère l'ajout d'un nouveau lien
ajouterLienElt.addEventListener("click", function () {
var auteurElt = creerElementInput("Entrez votre nom", 20);
var titreElt = creerElementInput("Entrez le titre du lien", 40);
var urlElt = creerElementInput("Entrez l'URL du lien", 40);
var ajoutElt = document.createElement("input");
ajoutElt.type = "submit";
ajoutElt.value = "Ajouter";
var formAjoutElt = document.createElement("form");
formAjoutElt.appendChild(auteurElt);
formAjoutElt.appendChild(titreElt);
formAjoutElt.appendChild(urlElt);
formAjoutElt.appendChild(ajoutElt);
var p = document.querySelector("p");
// Remplace le bouton d'ajout par le formulaire d'ajout
p.replaceChild(formAjoutElt, ajouterLienElt);
// Ajoute le nouveau lien
formAjoutElt.addEventListener("submit", function (e) {
e.preventDefault(); // Annule la publication du formulaire
var url = urlElt.value;
// Si l'URL ne commence ni par "http://" ni par "https://"
if ((url.indexOf("http://") !== 0) && (url.indexOf("https://") !== 0)) {
// On la préfixe par "http://"
url = "http://" + url;
}
// Création de l'objet contenant les données du nouveau lien
var lien = {
titre: titreElt.value,
url: url,
auteur: auteurElt.value
};
var lienElt = creerElementLien(lien);
// Ajoute le nouveau lien en haut de la liste
contenuElt.insertBefore(lienElt, contenuElt.firstChild);
// Remplace le formulaire d'ajout par le bouton d'ajout
p.replaceChild(ajouterLienElt, formAjoutElt);
// Création du message d'information
var infoElt = document.createElement("div");
infoElt.classList.add("info");
infoElt.textContent = "Le lien \"" + lien.titre + "\" a bien été ajouté.";
p.insertBefore(infoElt, ajouterLienElt);
// Suppression du message après 2 secondes
setTimeout(function () {
p.removeChild(infoElt);
}, 2000);
//-----------------------------------------------------//
listeLiens.push(lien);
var data = JSON.stringify(listeLiens);
var dataFin = JSON.stringify(listeLiens[listeLiens.length-1]);
console.log(dataFin)
ajaxPost("https://oc-jswebsrv.herokuapp.com/api/lien", dataFin, function () {
});
//ajaxGet
ajaxGet("https://oc-jswebsrv.herokuapp.com/api/liens", function (){
});
// fin de ajaxGet
});
});
Ajax :
function ajaxGet(url, callback) {
var req = new XMLHttpRequest();
req.open("GET", url);
req.addEventListener("load", function () {
if (req.status >= 200 && req.status < 400) {
// Appelle la fonction callback en lui passant la réponse de la requête
callback(req.responseText);
console.log(req.responseText);
} else {
console.error(req.status + " " + req.statusText + " " + url);
}
});
`req.addEventListener("error", function () {
console.error("Erreur réseau avec l'URL " + url);
});
req.send(null);
}
// Exécute un appel AJAX POST
// Prend en paramètres l'URL cible, la donnée à envoyer et la fonction callback appelée en cas de succès
// Le paramètre isJson permet d'indiquer si l'envoi concerne des données JSON
function ajaxPost(url, data, callback, isJson) {
var req = new XMLHttpRequest();
req.open("POST", url);
req.addEventListener("load", function () {
if (req.status >= 200 && req.status < 400) {
// Appelle la fonction callback en lui passant la réponse de la requête
callback(req.responseText);
} else {
console.error(req.status + " " + req.statusText + " " + url);
}
});
req.addEventListener("error", function () {
console.error("Erreur réseau avec l'URL " + url);
});
if (isJson) {
// Définit le contenu de la requête comme étant du JSON
req.setRequestHeader("Content-Type", "application/json");
// Transforme la donnée du format JSON vers le format texte avant l'envoi
trucdata = JSON.stringify(data);
}
req.send(data);
}
`

Related Links

Gathering information from a textfile. Corona SDK
calling rest api in spring
Upload homewizard data to cosm
encoding/json unmarshal missing a field
Play Framework 2.1.1 Json Writes nested objects
Converting nested lists to json gives superfluous arrays
REST design advice on simple order service
Chrome Manifest.json syntax error
Importing JSON data in Highcharts
Uncaught SyntaxError : Unexpected string (line 5)
Handle multidimensional JSON with scala Play framework
Elasticsearch Delete Mapping Property
JQuery AJAX and autopopulate dropdown menu
ListView and Data Models - Blackberry
ng-repeat not accurately pulling data
Error The length of the string exceeds the value set on the maxJsonLength property

Categories

HOME
python
json
plsql
firebase-app-indexing
google-sheets-api
hana
angular2-directives
rfc
onenote-api
cartodb
cortex-a
game-maker-studio-1.4
qt-installer
pyyaml
deb
cocoa-touch
binutils
k2
http-method
ab-initio
solidworks
data-conversion
svnkit
helix-3d-toolkit
smart-mobile-studio
salesforce-chatter
service-locator
honeysql
openshift-enterprise
autocompletetextview
codesys
discord.net
image-compression
meta-raspberrypi
haskell-pipes
tripwire
bing-translator-api
amazon-clouddrive
archer
azureportal
pagefile
unity3d-editor
iron.io
restivejs
atlassian-crowd
typhoon
hspec
manifest.mf
jackson-databind
listadapter
codesign
approval-tests
anythingslider
android-viewholder
lmfit
p-np
uialertview
webhdfs
pylearn
httpie
moai
alphablending
errorprovider
sid
system.web
visual-c++-2010-express
baucis
sqljdbc
cling
loop-invariant
nsmatrix
entity-framework-4.1
nuspec
dwolla
android-contextmenu
cgpath
blockingqueue
expression-evaluation
die
signals2
concurrent-programming
ets
file-encodings
webrat
filetime
handheld
weborb

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App