使用jQuery获取与序列化form表单数据的Ajax方法

需积分: 50 11 下载量 132 浏览量 更新于2024-09-10 收藏 2KB TXT 举报
"通过jQuery扩展方法实现form表单序列化为JSON对象,并利用ajax进行数据提交" 在JavaScript中,处理HTML表单数据时,通常需要将表单数据转换为JSON格式以便于通过Ajax发送到服务器。这里提供的代码示例展示了一个jQuery插件方法,用于将一个`<form>`元素序列化为JSON对象。该方法名为`serializeJson`,它扩展了jQuery的选择器功能。 首先,我们来看一下`serializeJson`函数的核心部分: ```javascript $.fn.serializeJson = function() { var serializeObj = {}; var array = this.serializeArray(); var str = this.serialize(); $(array).each(function() { if (serializeObj[this.name]) { if ($.isArray(serializeObj[this.name])) { serializeObj[this.name].push(this.value); } else { serializeObj[this.name] = [serializeObj[this.name], this.value]; } } else { serializeObj[this.name] = this.value; } }); return serializeObj; }; ``` 这个函数首先创建一个空对象`serializeObj`,然后调用`serializeArray`方法将表单数据转换为数组。接着,遍历数组中的每一项,如果键(`name`属性)在`serializeObj`中已存在,且其值是数组,则将当前值添加到数组中;若值不是数组,则将当前值与原值合并成数组。如果键不存在,则直接将当前值存储在`serializeObj`中。 接下来,代码中有一个示例应用此方法,通过`$("#f1").serializeJson()`获取ID为`f1`的表单的JSON数据: ```javascript var param = $("#f1").serializeJson(); ``` 之后,使用`$.ajax`进行异步请求,将`param`作为数据发送到服务器: ```javascript $.ajax({ type: "post", url: "pcaddress/pcadd.do", data: param, success: function(data) { if (data.ok == "ok") { // ... } } }); ``` 在第一个`$.ajax`请求成功后,若服务器返回的数据`data.ok`为"ok",则发起第二个`$.ajax`请求,这次是GET请求,用于查询数据: ```javascript $.ajax({ type: "GET", url: "pcaddress/query.do?name=" + name, dataType: "json", contentType: "application/x-www-form-urlencoded;charset=utf-8", success: function(data) { // ... } }); ``` 这里的`name`变量似乎没有在之前定义,因此可能需要根据实际情况替换或补充。`dataType: "json"`表明期望服务器返回的数据类型为JSON。 总结起来,这段代码主要展示了如何利用jQuery将HTML表单数据转换为JSON对象,并通过Ajax发送到服务器进行处理。这在Web应用程序中非常常见,特别是在需要动态交互、无需刷新页面的情况下。通过这种方式,可以实现用户友好的前端体验,同时保持与服务器的数据同步。