jquery 使用AJAX提交Form表单实例介绍

 使用AJAX提交Form表单的方法,其中主要的就是ajaxForm()和ajaxSubmit(),ajaxForm和ajaxSubmit都支持众多的选项参数,这些选项参数可以使用一个Options对象来提供。Options只是一个JavaScript对象,它包含了如下一些属性与值的集合:

Options对象的详解:

1.)target
指明页面中由服务器响应进行更新的元素。元素的值可能被指定为一个jQuery选择器字符串,一个jQuery对象,或者一个DOM元素。
默认值:null。

2.)url
重写或者指定表单的'action'属性。
默认值:表单的action属性值

3.)type
重写或者指定表单的'method' 属性,"GET"或"POST"。
默认值:表单的method属性值(如果没有找到默认为“GET”)。

4.)beforeSubmit
表单提交前被调用的回调函数,该方法通常被提供来运行预提交逻辑或者校验表单数据。如果"beforeSubmit"回调函数返回false,那么表单将不被提交。"beforeSubmit"回调函数带三个调用参数:数组形式的表单数据,jQuery表单对象,以及传入ajaxForm/ajaxSubmit中的Options对象。表单数组接受以下方式的数据:
[ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
默认值:null

5.)success
表单成功提交后调用的回调函数。如果提供"success"回调函数,当从服务器返回响应后它被调用。然后由dataType选项值决定传回responseText还是responseXML的值。
默认值:null

6.)dataType

期望服务器的的回应的类型。null、"xml"、"script"或者"json"其中之一。dataType提供一种方法,它规定了怎样处理服务器的响应。这个被直接地反映到jQuery.httpData方法中去。下面的值被支持:
'xml':如果dataType == 'xml',将把服务器响应作为XML来对待。同时,如果“success”回调方法被指定,将传回responseXML值
'json':如果dataType == 'json', 服务器响应将被求值,并传递到“success”回调方法,如果它被指定的话。
'script':如果dataType == 'script', 服务器响应将求值成纯文本。
默认值:null(服务器返回responseText值)

7.)semantic
布尔标志,表示数据是否必须严格按照语义顺序来进行提交。注意:一般来说,表单已经按照语义顺序来进行了串行化(或序列化),除了type="image"的input元素。如果你的服务器有严格的语义要求,以及表单中包含有一个type="image"的input元素,就应该将semantic设置为true。
默认值:false

8.)resetForm
布尔标志,表示如果表单提交成功是否进行重置。
默认值:null

9.)clearForm
布尔标志,表示如果表单提交成功是否清除表单数据。
默认值:null

10.)在$.ajax options中用到的元素都可以用在这里:

 首先,新建Login.html页面:

 代码如下 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>$.ajax()方法发送请求</title>
    <script type="text/javascript" src="Scripts/jquery-1.4.1.js"></script>
    <style type="text/css">
        body
        {
            font-size: 13px;
        }
        .divFrame
        {
            width: 225px;
            border: solid 1px #666;
        }
        .divFrame .divTitle
        {
            padding: 5px;
            background-color: #eee;
            height: 23px;
        }
        .divFrame .divTitle span
        {
            float: left;
            padding: 2px;
            padding-top: 5px;
        }
        .divFrame .divContent
        {
            padding: 8px;
            text-align: center;
        }
        .divFrame .divContent .clsShow
        {
            font-size: 14px;
            line-height: 2.0em;
        }
        .divFrame .divContent .clsShow .clsError
        {
            font-size: 13px;
            border: solid 1px #cc3300;
            padding: 2px;
            display: none;
            margin-bottom: 5px;
            background-color: #ffe0a3;
        }
        .txt
        {
            border: #666 1px solid;
            padding: 2px;
            width: 150px;
            margin-right: 3px;
        }
        .btn
        {
            border: #666 1px solid;
            padding: 2px;
            width: 50px;
        }
    </style>
    <script type="text/javascript">
        $(function () {
            $("#txtName").focus();//输入焦点
            $("#txtName").keydown(function (event) {
                if (event.which == "13") {//回车键,移动光标到密码框
                    $("#txtPass").focus();
                }
            });
            $("#txtPass").keydown(function (event) {
                if (event.which == "13") {//回车键,用.ajax提交表单
                    $("#btnLogin").trigger("click");
                }
            });
            $("#btnLogin").click(function () { //“登录”按钮单击事件
                //获取用户名称
                var strTxtName = encodeURI($("#txtName").val());
                //获取输入密码
                var strTxtPass = encodeURI($("#txtPass").val());
                //开始发送数据
                $.ajax
                ({ //请求登录处理页
                    url: "Login.aspx", //登录处理页
                    dataType: "html",
                    //传送请求数据
                    data: { txtName: strTxtName, txtPass: strTxtPass },
                    success: function (strValue) { //登录成功后返回的数据
                        //根据返回值进行状态显示
                        if (strValue == "True") {//注意是True,不是true
                            $(".clsShow").html("操作提示,登录成功!" + strValue);
                        }
                        else {
                            $("#divError").show().html("用户名或密码错误!" + strValue);
                        }
                    }
                })
            })
        })
    </script>
</head>
<body>
    <form id="frmUserLogin">
    <div class="divFrame">
        <div class="divTitle">
            <span>用户登录</span>
        </div>
        <div class="divContent">
            <div class="clsShow">
                <div id="divError" class="clsError">
                </div>
                <div>
                    名称:<input id="txtName" type="text" class="txt" /></div>
                <div>
                    密码:<input id="txtPass" type="password" class="txt" /></div>
                <div>
                    <input id="btnLogin" type="button" value="登录" class="btn" />&nbsp;&nbsp
                    <input id="btnReset" type="reset" value="取消" class="btn" />
                </div>
            </div>
        </div>
    </div>
    </form>
</body>
</html>

然后,新建Login.aspx,接收并处理数据:

 代码如下 复制代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="JSDemo.Login" ResponseEncoding="gb2312"%>
 
<%
    string strName = System.Web.HttpUtility.UrlDecode(Request["txtName"]);
    string strPass = System.Web.HttpUtility.UrlDecode(Request["txtPass"]);
    bool login = false;
    if (strName == "admin" && strPass == "admin")
    {
        login = true;
    }
    Response.Write(login);
%>

除了上面方法jquery ajax 还有很多方法,下面给大家简单列一下

1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中。

url (String) : 请求的HTML页的URL地址。

data (Map) : (可选参数) 发送至服务器的 key/value 数据。

callback (Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。

这个方法默认使用 GET 方式来传递的,如果[data]参数有传递数据进去,就会自动转换为POST方式的。jQuery 1.2 中,可以指定选择符,来筛选载入的 HTML 文档,DOM 中将仅插入筛选出的 HTML 代码。语法形如 "url #some > selector"。

这个方法可以很方便的动态加载一些HTML文件,例如表单。

示例代码:

 代码如下 复制代码
$(".ajax.load").load("http://www.cnblogs.com/yeer/archive/2009/06/10/1500682.html .post",
function (responseText, textStatus, XMLHttpRequest){
this;//在这里this指向的是当前的DOM对象,即$(".ajax.load")[0]
//alert(responseText);//请求返回的内容
//alert(textStatus);//请求状态:success,error
//alert(XMLHttpRequest);//XMLHttpRequest对象
});

这里将显示结果。 
 
 注:不知道为什么URL写绝对路径在FF下会出错,知道的麻烦告诉下。下面的get()和post()示例使用的是绝对路径,所以在FF下你将会出错并不会看到返回结果。还有get()和post()示例都是跨域调用的,发现传上来后没办法获取结果,所以把运行按钮去掉了。

 2. jQuery.get( url, [data], [callback] ):使用GET方式来进行异步请求

参数:

url (String) :  发送请求的URL地址.

data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示,会做为QueryString附加到请求URL中。

callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。

这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。

示例代码:

 代码如下 复制代码

 $.get("./Ajax.aspx", {Action:"get",Name:"lulu"}, function (data, textStatus){
//返回的 data 可以是 xmlDoc, jsonObj, html, text, 等等.
this; // 在这里this指向的是Ajax请求的选项配置信息,请参考下图
alert(data);
//alert(textStatus);//请求状态:success,error等等。
当然这里捕捉不到error,因为error的时候根本不会运行该回调函数
//alert(this);
});

点击发送请求:

jQuery.get()回调函数里面的 this ,指向的是Ajax请求的选项配置信息:

 

3. jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求

参数:

url (String) : 发送请求的URL地址.

data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示。

callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。

type (String) : (可选)官方的说明是:Type of data to be sent。其实应该为客户端请求的类型(JSON,XML,等等)

这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。

示例代码:

Ajax.aspx:

 代码如下 复制代码

Response.ContentType = "application/json";
Response.Write("{result: '" + Request["Name"] + ",你好!(这消息来自服务器)'}");jQuery 代码:
$.post("Ajax.aspx", { Action: "post", Name: "lulu" },
function (data, textStatus){
// data 可以是 xmlDoc, jsonObj, html, text, 等等.
//this; // 这个Ajax请求的选项配置信息,请参考jQuery.get()说到的this
alert(data.result);
}, "json");

点击提交:

这里设置了请求的格式为"json":

 如果你设置了请求的格式为"json",此时你没有设置Response回来的ContentType 为:Response.ContentType = "application/json"; 那么你将无法捕捉到返回的数据。

注意一下,alert(data.result); 由于设置了Accept报头为“json”,这里返回的data就是一个对象,并不需要用eval()来转换为对象。

 4. jQuery.getScript( url, [callback] ) : 通过 GET 方式请求载入并执行一个 JavaScript 文件。

参数
url (String) : 待载入 JS 文件地址。

callback (Function) : (可选) 成功载入后回调函数。

jQuery 1.2 版本之前,getScript 只能调用同域 JS 文件。 1.2中,您可以跨域调用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步执行脚本。如果通过 getScript 加入脚本,请加入延时函数。

这个方法可以用在例如当只有编辑器focus()的时候才去加载编辑器需要的JS文件.下面看一些示例代码:

加载并执行 test.js。
jQuery 代码:

 代码如下 复制代码

$.getScript("test.js");

--------------------------------------------------------------------------------

加载并执行 AjaxEvent.js ,成功后显示信息。

jQuery 代码:

 代码如下 复制代码

$.getScript("AjaxEvent.js", function(){
alert("AjaxEvent.js 加载完成并执行完成.你再点击上面的Get或Post按钮看看有什么不同?");
}); 

加载完后请重新点击一下上面的 Load 请求看看有什么不同。

时间: 2024-07-30 00:32:11

jquery 使用AJAX提交Form表单实例介绍的相关文章

jQuery ajax提交Form表单实例(附demo源码)_jquery

本文实例讲述了jQuery ajax提交Form表单的方法.分享给大家供大家参考,具体如下: Jquery的$.ajax方法可以实现ajax调用,要设置url,post,参数等. 如果要提交现有Form需要写很多代码,何不直接将Form的提交直接转移到ajax中呢. 以前的处理方法 如Form代码如下: <form id="Form1" action="action.aspx" method="post" > 名称:<input

jquery实现ajax提交form表单的方法总结

 本篇文章主要是对jquery实现ajax提交form表单的方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 方法一:     代码如下: function AddHandlingFeeToRefund()           {             var AjaxURL= "../OrderManagement/AjaxModifyOrderService.aspx";                    alert($('#formAddHandlingFe

jquery的ajax提交form表单的两种方法小结(推荐)_jquery

jquery的ajax提交form表单的两种方法小结(推荐) 方法一: function AddHandlingFeeToRefund() { var AjaxURL= "../OrderManagement/AjaxModifyOrderService.aspx"; alert($('#formAddHandlingFee').serialize()); $.ajax({ type: "POST", dataType: "html", url:

jquery实现ajax提交form表单的方法总结_jquery

方法一: 复制代码 代码如下: function AddHandlingFeeToRefund()         {            var AjaxURL= "../OrderManagement/AjaxModifyOrderService.aspx";                   alert($('#formAddHandlingFee').serialize());                $.ajax({                    type:

jQuery实现Ajax提交form表单的程序

介绍:介绍了如何将一个普通的form表单,迅速改造成通过ajax方式提交,并将结果显示在对话框中. 正文: 我们有一个非常普通的表单:   <form id="form1" name="form1" method="get" action="post.html"> 标题<input id="testtitle" name="testtitle" type="t

Ajax提交Form表单及文件上传的实例代码_AJAX相关

前几天,发现了一些小问题.我在写后台管理页面时,需要上传一张图片.于是我就用很普通的Form表单上传有一段Json串和图片文件: Form表单上传图片只需要在<form>标签里加上enctype = 'multipart/form-data',这样是可以上传图片的: 但问题来了,在我进行用Form表单提交的时候直接跳出来提交返回值的页面并且原先的页面刷新: 这样我们可以先到异步的Ajax可以实现局部刷新: 废话不多说了 直接上代码: 首先是html: <form id = "f

JS提交form表单实例分析_javascript技巧

本文实例讲述了JS提交form表单.分享给大家供大家参考,具体如下: 一.javascript 页面加裁时自动提交表单: Form表单: <form method="post" id="myform" action="a.php"> <input type="submit" value="提交表单"> </form> javascript 代码: <script t

jquery中AJAX提交from表单的例子

这里主要是jquery实现ajax提交form表单的方法,需要的朋友可以过来参考下.  代码如下 复制代码 //添加 $(".BaseWorkSaveAdd").click(function (e) {     $.ajax({ type: 'POST', url: "/TalentResume/TalentWorkAdd", data: {     WorkID: $("#WORKID").val(),     INOFFICEDATESTAR

基于jQuery通过jQuery.form.js插件使用ajax提交form表单_javascript技巧

我们在提交表单的时候,如果没有使用ajax提交,页面都会自己刷新一下,显得非常的不友好,所以我们需要把我们的表单提交修改为ajax的模式,可以让用户清楚地知道他们在提交表单的时候处在哪一个阶段:正在提交?提交成功? 我简单使用了一下,jQuery Form插件有一下优点: 1.支持提交前验证. 2.支持提交后回调. 3.采用AJAX方式,有很好的用户体验 4.提交方式是灵活.只要指定要提交的form ID即可.想提交那个form.就可提交那个.同时提交参数可配置. 5.支持提交多种类型数据.如: