Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTTP POST->;400:请求错误_Javascript_Json_Api - Fatal编程技术网

Javascript HTTP POST->;400:请求错误

Javascript HTTP POST->;400:请求错误,javascript,json,api,Javascript,Json,Api,我正在学习如何制作一个API,目前API运行良好(与Postman一起)。我现在正在尝试制作一个使用它的应用程序,我成功地提出了GET和DELETE请求,但是我被困在了POST和PUT上 以下是我为该职位所做的尝试: url = "http://localhost:8000/musiques" let titre = document.getElementById('formTitre').value; let auteur = document.getElementByI

我正在学习如何制作一个API,目前API运行良好(与Postman一起)。我现在正在尝试制作一个使用它的应用程序,我成功地提出了GET和DELETE请求,但是我被困在了POST和PUT上

以下是我为该职位所做的尝试:

url = "http://localhost:8000/musiques"

let titre = document.getElementById('formTitre').value;
let auteur = document.getElementById('formAuteur').value;
let genre = document.getElementById('formGenre').value;
let annee = document.getElementById('formAnnee').value;
let image = document.getElementById('formImage').value;

let jsonArr = [];

jsonArr.push({
    auteur: auteur,
    titre: titre,
    genre: genre,
    annee: annee,
    image: image
});
console.log(jsonArr);

let req = new XMLHttpRequest();
req.open("POST", url);
req.send(jsonArr);
当我尝试它时,我有一个错误400错误的请求


编辑:
好的,现在我有这个:

let titre = document.getElementById('formTitre').value;
let auteur = document.getElementById('formAuteur').value;
let genre = document.getElementById('formGenre').value;
let annee = document.getElementById('formAnnee').value;
let image = document.getElementById('formImage').value;

let jsonArr = [];

console.log(titre);

jsonArr.push({
    auteur: auteur,
    titre: titre,
    genre: genre,
    annee: annee,
    image: image
});

console.log(JSON.stringify(jsonArr));

fetch(url, {
    method: 'POST',
    body: JSON.stringify(jsonArr),
    headers:{
        'Content-Type': 'application/json'
    }
}).then(res => res.json())
.then(response => console.log('Success:', JSON.stringify(response)))
.catch(error => console.error('Error:', error));
这给了我一个错误:

Success: {"error":{"code":500,"message":"Internal Server Error","exception":
[{"message":"An exception occurred while executing 'INSERT INTO api_musique
(auteur, genre, image, annee, titre) VALUES (?, ?, ?, ?, ?)' with params 
[null, null, null, null, null]:\n\nSQLSTATE[23000]: Integrity constraint 
violation: 1048 Le champ 'auteur' can't be empty
现在好多了。非常感谢,我正在研究它。

您可以利用:

更多关于。它返回一个值,您可以使用该值获取信息

Response对象将允许您找出获得
400
的原因。否则,这可能是API引起的问题。

您可以利用:

更多关于。它返回一个值,您可以使用该值获取信息

Response对象将允许您找出获得
400
的原因。否则,这可能是您的API导致的问题。

以下是更正

let titre = document.getElementById('formTitre').value;
let auteur = document.getElementById('formAuteur').value;
let genre = document.getElementById('formGenre').value;
let annee = document.getElementById('formAnnee').value;
let image = document.getElementById('formImage').value;

let jsonArr = {
    auteur: auteur,
    genre: genre,
    image: image,
    annee: parseInt(annee),
    titre: titre
};

console.log(titre);


console.log(JSON.stringify(jsonArr));

fetch(url, {
    method: 'POST',
    body: JSON.stringify(jsonArr),
    headers:{
        'Content-Type': 'application/json'
    }
}).then(res => res.json())
.then(response => console.log('Success:', JSON.stringify(response)))
.catch(error => console.error('Error:', error));
非常感谢大家

这是更正

let titre = document.getElementById('formTitre').value;
let auteur = document.getElementById('formAuteur').value;
let genre = document.getElementById('formGenre').value;
let annee = document.getElementById('formAnnee').value;
let image = document.getElementById('formImage').value;

let jsonArr = {
    auteur: auteur,
    genre: genre,
    image: image,
    annee: parseInt(annee),
    titre: titre
};

console.log(titre);


console.log(JSON.stringify(jsonArr));

fetch(url, {
    method: 'POST',
    body: JSON.stringify(jsonArr),
    headers:{
        'Content-Type': 'application/json'
    }
}).then(res => res.json())
.then(response => console.log('Success:', JSON.stringify(response)))
.catch(error => console.error('Error:', error));

非常感谢大家

除了远程服务器的响应,还有其他信息吗?别忘了,我们不知道它需要什么格式的请求,不知道它认为有效的数据值,也不知道您实际发送了什么值。@ADyson我做了一些更改,这个错误消息确实更好。还有比远程服务器响应中的信息更多的信息吗?别忘了,我们不知道它需要什么格式的请求,不知道它认为什么数据值有效,也不知道您实际发送了什么值。@ADyson我做了一些更改,有了这个错误消息确实更好。