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

更新时间:2018-09-14    来源:jquery    手机版     字体:

【www.bbyears.com--jquery】

 使用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页面:

 代码如下


    $.ajax()方法发送请求
    <script type="text/javascript" src="Scripts/jquery-1.4.1.js"></script>
   
    <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>


   

   
       
            用户登录
       
       
           
               
               
               
                    名称:
               
                    密码:
               
                      
                   
               
           
       
   
   



然后,新建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 请求看看有什么不同。

本文来源:http://www.bbyears.com/wangyezhizuo/44327.html

热门标签

更多>>

本类排行