Ich versuche, ein einfaches JSON-Objekt an eine Cloud-Datenbank zu senden, aber ich bekomme immer einen Fehler. Ich setze die Berechtigungen für die Cloudant-Datenbank so, dass sie Lesen, Schreiben und Replizieren erlauben. Ich habe bereits versucht, den Ajax-Beitrag neu zu schreiben, um zu setzen, fügte ich einen Header, der den Fehler nicht gelöst hat, aber ich bekomme den Fehler, und kann nicht scheinen, die Ursache zu finden.Fehler 415 JSON-Datei in Cloudant öffentliche Datenbank
Der genaue Fehler ist:
POST https://birdoftravel.cloudant.com/questions/_all_docs/ 415 (Unsupported Media Type)
send @ jquery-1.12.4.min.js:4
ajax @ jquery-1.12.4.min.js:4
saveQuestionToDB @ saveQuestion.js:54
(anonymous) @ saveQuestion.js:77
dispatch @ jquery-1.12.4.min.js:3
r.handle @ jquery-1.12.4.min.js:3
function QuestionObject(q, o, a){
this.question = q;
this.options = o;
this.answer = a;
}
function createQuestion(){
var q = $('#question').val();
console.log("question: "+q);
var o = $('#options').val().split(',');
var a = $('#answer').val();
var question = new QuestionObject(q,o,a);
var jsonQ = JSON.stringify(question);
console.log("json string"+jsonQ);
$('#question').val("");
$('#options').val("");
$('#answer').val("");
return jsonQ;
}
function saveQuestionToDB(){
var urlDB = 'https://birdoftravel.cloudant.com/questions/_all_docs/';
var data = createQuestion();
console.log("data :"+data);
/* $.ajax({
url: urlDB,
type: "POST",
dataType: "application/json",
data: data,
success: function(){
alert('The question was posted!');
},
error: function(err){
console.log("error: "+err+" question not posted: "+data);
}
});*/
$.ajax({
type: "POST",
url: urlDB,
data: data,
success: function(d){
console.log("question was posted!"+d);
},
error: function(e){
console.log("not posted! "+e);
},
dataType: "application/json",
});
}
$('#btn').click(function(e){
saveQuestionToDB();
e.preventDefault();
});
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="quizStyle.css">
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous">
</script>
<title>Add a new quiz</title>
</head>
<body>
<h2>Enter a new quiz</h2>
<form id="newQuizForm">
Insert question:<br>
<input type="text" id="question"><br>
Insert optional answers seperated by ;<br>
<input type="text" id="options"><br>
Insert correct answer:<br>
<input type="text" id="answer"><br>
<input type="submit" id="btn" value="Save question">
</form>
<script src="saveQuestion.js"></script>
</body>
</html>
Auch wenn es geändert wird, bleibt es erhalten gibt den gleichen 415 Fehler. Ich habe auch versucht, einen Post mit Postboten zu senden, und ich bekomme den gleichen Fehler. { "Fehler": "bad_content_type", "Grund": "Content-Type muss application/json sein"} Ich aber ein Get Senden funktioniert wirklich nicht verstehen, warum es funktioniert nicht. – Karima
Ich sende einen zusätzlichen Parameter für den Inhaltstyp an json, und jetzt gibt es einen Fehler bezüglich der utf-8 von json. – Karima
Siehe Updates in meiner ursprünglichen Antwort. Um CORS in Cloudant zu aktivieren, öffnen Sie den Tab ** Account ** und wählen Sie ** CORS **. – ptitzler