今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式

时间:2022-03-19 20:18:40

今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式 
jquery中的serialize() 方法 
该方法通过序列化表单值,创建 URL 编码文本字符串 
序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中 
这样当表单中要提交的参数比较多时,就可以使用该方法进行提交,否则将在ajax中得代码会很长,有可能在编写时出错,也不方便检查 
以下是自己写的测试代码

 ItemInfo类:

publicclassItemInfo
{
publicstringPartNumber
{
get;
set;
}
publicstringProject
{
get;
set;
}
publicstringFamily
{
get;
set;
}
publicdecimalUnit_Price
{
get;
set;
}
publicint?Component_Qty
{
get;
set;
}
publicstringActive
{
get;
set;
}
publicstringHaveChild
{
get;
set;
}
publicDateTimeEffective_Date
{
get;
set;
}
publicDateTimeExpire_Date
{
get;
set;
}
publicstringMaintained_By
{
get;
set;
}
}

Html代码:

<formid="fm"method="post"novalidate>
<divclass="fitem">
<label>PartNumber:</label>
<inputname="PartNumber"class="easyui-validatebox"required="true">
</div>
<divclass="fitem">
<label>Project:</label>
<inputid="projectID"name="Project"class="easyui-combobox"/>
</div>
<divclass="fitem">
<label>Family:</label>
<inputname="Family"/>
</div>
<divclass="fitem">
<label>Unit_Price:</label>
<inputname="Unit_Price"data-options="min:0.0,precision:6"/>
</div>
<divclass="fitem">
<label>Component_Qty:</label>
<inputname="Component_Qty"data-options="min:0,precision:0"/>
</div>
<divclass="fitem">
<label>Active:</label>
<inputtype="checkbox"name="Active"/>
</div>
<divclass="fitem">
<label>HaveChild:</label>
<inputtype="checkbox"name="HaveChild"/>
</div>
<divclass="fitem">
<label>Effective_Date:</label>
<inputid="EFF_Date"name="Effective_Date"/>
</div>
<divclass="fitem">
<label>Expire_Date:</label>
<inputid="EX_Date"name="Expire_Date"/>
</div>
<divclass="fitem">
<label>Maintained_By:</label>
<inputname="Maintained_By"readonly/>
</div>
</form>

Form表单中的Name属性是必须和ItemInfo类属性的字段名称一致才可以,这一点十分重要。

Jquery代码  今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式

$.ajax({
type:"post",
url:'/ItemInfo/EditItem',//对应于controllerName/ActionName
timeout:3000,
data: $("#fm").serialize(),// { PartNumber: '22', Project: 'Project', Family: 'Chord' },
error:function(){ alert('Failed!');},
success:function(data, textStatus){
$('#Planner_ItemInfo').datagrid('loadData', data);
}
});

蓝色部分的data经Json数据处理后对应的字段全部是ItemInfo类中属性的,这样MVC会根据ItemInfo类的属性字符串(如Project字段)去Form表单中获取对应的取值,从而实现类数据的取值。
 
MVC后台代码:

  publicclassItemInfoController:Controller

    {

publicboolEditItem(ItemInfo item)

{
returntrue;
}

}

实验成功,很方便。