【问题标题】:make POST request to db.json with multiple attributes inside object在对象内使用多个属性向 db.json 发出 POST 请求
【发布时间】:2019-12-19 03:15:10
【问题描述】:

我有以下代码:

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 调用。

【问题讨论】:

    标签: javascript ajax json-server


    【解决方案1】:

    试试这个:

    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)
    
    }
    

    【讨论】:

    • 谢谢!出于某种原因,当使用您的 formdata 方法时,我的 JSON 服务器上根本没有出现任何数据 ^^ 创建了一个带有 id 的新行,但它不包含任何数据。您提到的第一种方法仍然只是将所有内容放入一行,而不是为每个键 => 值对创建单独的行。
    • @baryon123 对于第一种方法,在您的 JSON 服务器中,您应该对接收到的行进行解码,以便它可以成为字典(键 => 值对)!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 2016-05-30
    • 2018-08-19
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多