特定的输入值转换为JSON

时间:2018-09-18 15:44:51

标签: php jquery json

以下表单输入值需要使用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 个答案:

答案 0 :(得分:1)

要删除不需要的输入,可以使用delete运算符。

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

我不确定为什么它不能正确维护序列。如果是真的,这听起来像是您使用的serializeJSON插件中的错误。可能还有其他更好的实现方式。