我正在開發一個帶有 express 和 ejs 的網站。我遇到了需要通過ajax呼叫api的麻煩。問題出在按鈕 onclick 上,我將兩個值傳遞給 ajax 資料。但它給出了錯誤,我嘗試了很多方法,但我搞砸了。我是新手,請在下面找到我的代碼。
const parsedData = JSON.parse(localStorage.getItem('myData'));
const container = document.getElementById('s1');
parsedData.data.rows.forEach((result, idx) => {
var a = result.master_id;
var b = result.session_name;
console.log(a,b,"a","b")
var userData = {"pid":a,"session" :b};
console.log(userData,"userData");
sessionStorage.setItem("user", JSON.stringify(userData));
console.log(userData,"data for api");
const card = document.createElement('div');
card.classList = 'card';
const content = `
<div >
<div onclick="graphApi()">
</div>
</div>
`;
container.innerHTML = content;
});
function graphApi(){
var apiValue =JSON.parse( sessionStorage.getItem("user"));
console.log(apiValue, "value from card");
$.ajax({
type: "POST",
data: apiValue,
dataType:"json",
url: "http://localhost:5000/graphFromcsv",
success: function(data) {
console.log(data,"graph api");
}
error: function(err){
alert("graph api failed to load");
console.log(err);
},
});
我總是在 api value undefined 和 400 badrequest 中得到這個pid。但如果我使用原始資料,例如
{
"pid":"WE6",
"session":"W.csv"
}
而不是 apiValue 我的 ajax 是成功的,我正在獲取資料。我正在使用此資料繪制多線圖。任何幫助表示贊賞。
uj5u.com熱心網友回復:
您需要更正data鍵及其值(如果是 json 資料,則值必須是字串)并添加contentType鍵,例如
$.ajax({
type: "POST",
data: sessionStorage.getItem("user") || '{}',
dataType: "json",
contentType: "application/json",
url: "http://localhost:5000/graphFromcsv",
success: function (data) {
console.log(data, "graph api");
},
error: function (err) {
alert("graph api failed to load");
console.log(err);
},
});
注意:在后端(ExpressJS)中,請確保您使用的是正確的body-parser中間件,例如app.use(express.json());
uj5u.com熱心網友回復:
假設您的apiValue包含{"pid":"WE6", "session":"W.csv" }然后body: { apiValue }將等于:
body: {
apiValue: {
"pid":"WE6",
"session":"W.csv"
}
}
但是,如果您使用指向物件的鏈接body: apiValue(不帶括號),js 將構建它,如下所示:
body: {
"pid":"WE6",
"session":"W.csv"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/310988.html
標籤:javascript 节点.js json 阿贾克斯 表达
