代码之家  ›  专栏  ›  技术社区  ›  Sonjoy Datta

特定输入值转换为JSON

  •  2
  • Sonjoy Datta  · 技术社区  · 6 年前

    下面的表单输入值需要使用jquery在json中转换,我将通过ajax将这个json数据更新为mysql。我需要将特定的输入值(例如:产品ID、产品名称、产品价格、折扣原因、折扣金额)转换为JSON格式。我试过自己:

    $(document).ready(function(){
      var jsons = $('form').serializeJSON();
      console.log( jsons );
    });
    

    但是,我不能保持顺序,也不能跳过不需要的输入。

    PHP代码:

        <form>
            First name: <input type="text" name="first_name" value="Addem"> 
            Last name: <input type="text" name="last_name" value="Smith"><br><br>
            Product id: <input type="number" name="items[][cat_id]" value="18"><br><br>
            Product name: <input type="text" name="items[][product_name]" value="Men's t-shirt"><br><br>
            Product sku: <input type="text" name="item_sku" value="PBKL09509403"><br><br>
            Date: <input type="text" name="date" value="2018-09-18"><br><br>
            Product price: <input type="text" name="items[][product_price]" value="165.00"><br><br>
            Discount reason: <input type="text" name="adjustments[][reason]" value="Special"> 
            Discount amount: <input type="text" name="adjustments[][amount]" value="20.00"><br><br>
            Product total: <input type="text" name="total[price]" value="145.00"><br><br>
        </form>
    

    JSON输出(必需):

    {  
       "items":[  
          {  
             "cat_id":18,
             "product_name":"Men's t-shirt",
             "product_price":165
          }
       ],
       "total":{  
          "price":145
       },
       "adjustments":[  
          {  
             "reason":"Special",
             "amount":"20"
          }
       ]
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Barmar    6 年前

    要删除不需要的输入,可以使用 delete 操作员。

    var jsons = $("form").serializeJSON();
    delete jsons.first_name;
    delete jsons.last_name;
    

    我不知道为什么它不能正确地保持序列。如果这是真的,听起来就像是 serializeJSON 你正在使用的插件。可能还有其他更好的实现。