Php 特定的输入值转换为JSON

Php 特定的输入值转换为JSON,php,jquery,json,Php,Jquery,Json,以下表单输入值需要使用Jquery转换为JSON,我将通过AJAX将这些JSON数据更新为mysql。我需要将特定的输入值(例如:产品id、产品名称、产品价格、折扣原因、折扣金额)转换为JSON格式。我试过自己: $(document).ready(function(){ var jsons = $('form').serializeJSON(); console.log( jsons ); }); 但是,我不能维护序列,也不能跳过不需要的输入 PHP代码: <form&

以下表单输入值需要使用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>
{  
   "items":[  
      {  
         "cat_id":18,
         "product_name":"Men's t-shirt",
         "product_price":165
      }
   ],
   "total":{  
      "price":145
   },
   "adjustments":[  
      {  
         "reason":"Special",
         "amount":"20"
      }
   ]
}

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

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

我不知道为什么它不能正确地维护序列。如果这是真的,那么它听起来像是您正在使用的
serializeJSON
插件中的一个bug。可能还有其他更好的实现。

是否应该将
ca\u id
设置为
cat\u id
?是否确实需要JSON?如果您只使用
$(“form”).serialize()
它将创建与您的结构匹配的URL编码参数。很抱歉,这是一个错误。PHP不直接支持JSON参数,但是如果您使用
serialize()
,它可以从
$\u POST
获取这些参数。您只需删除不需要的输入即可<代码>删除jsons.first\u名称我找到了维护JSON序列的解决方案。当我按照json序列更改表单输入位置时,它就被解决了。我的意思是,表单输入需要排序为
名字、姓氏、产品id、产品名称、产品sku、日期、产品价格、产品总数、折扣原因、折扣金额
。另外,删除不需要的输入。我想你的意思是数组中项目的顺序与页面上项目的顺序不同。JavaScript对象不保证属性的顺序,通常没有什么依赖于它。但是,当我将表单输入顺序设置为与json数组相同时,它对我有效。是的,尽管没有保证,但有些实现碰巧记住了顺序。在编写依赖于它的应用程序时,您应该小心,它在所有浏览器中的工作方式可能都不一样。当顺序重要时,您应该使用数组,使用对象只是用于名称到值的映射。