首页 > 解决方案 > 在对象内使用多个属性向 db.json 发出 POST 请求

问题描述

我有以下代码:

function createObject(){
  let object = {
    product1 : "Apple",
    product2 : "Banana",
    product3 : "Cucumber",
    product4 : "Duba",
    product5 : "Emil",
    product6 : "Fidschi",
  }

  return object
}

function commonAJAXPOSTCall(jsonstring){
  return $.ajax({
    type: 'POST',
    data: jsonstring,
    url: "http://localhost:3000/posts"
  }).then((response) => {
    return response
  })
}

export async function jsonDBSetter(){
    let object = createObject()
    //console.log(object)
    object = JSON.stringify(object)
    let resultCheck = await commonAJAXPOSTCall(object)
    console.log(resultCheck)

}

现在的问题是,最终,来自对象的数据并没有像我想要的那样插入到“posts”表中。我希望每个属性都插入到它自己的行中,这样我就有了“key => value”,就像它在对象内部一样。但是,实际行为是 JSON 服务器创建一个密钥,然后将整个 JSON 字符串保存到这个单一密钥。

我对使用 json 服务器非常陌生,到目前为止,我还没有真正找到任何有用的东西来解释我的用例应该做什么......

编辑:我想避免一个“解决方法”,我循环遍历对象并对 JS 对象的每个成员进行 AJAX 调用。

标签: javascriptajaxjson-server

解决方案


尝试这个 :

return $.ajax({
    type: 'POST',
    data: jsonstring,
    contentType: "application/json",
    url: "http://localhost:3000/posts"
}).then((response) => {
    return response
})

如果它也不起作用,您可以尝试使用 Formdata 代替,如下所示:

function createObject(){
    let form_data = new FormData();

    form_data.append('product1', "Apple");
    form_data.append('product2', "Banana");
    form_data.append('product3', "Cucumber");
    form_data.append('product4', "Duba");
    form_data.append('product5', "Emil");
    form_data.append('product6', "Fidschi");

    return form_data;
}

function commonAJAXPOSTCall(formdata){
  return $.ajax({
    dataType: 'text',
    type: 'POST',
    contentType: false,
    processData: false,
    data: formdata,
    url: "http://localhost:3000/posts"
  }).then((response) => {
    return response
  })
}

export async function jsonDBSetter(){
    let formdata = createObject()
    let resultCheck = await commonAJAXPOSTCall(formdata)
    console.log(resultCheck)

}

推荐阅读