`
baby69yy2000
  • 浏览: 187700 次
  • 性别: Icon_minigender_1
  • 来自: 自己输入城市...
社区版块
存档分类
最新评论

Prototype AJAX 示例

    博客分类:
  • AJAX
阅读更多
GET 示例
<p>Enter customer ID: <input type='text' id='customerID' /></p>
<p><input type="button" value='Get Customer Info' onclick='requestCustomerInfo()' /></p>
<div id='rs'></div>

function requestCustomerInfo() {
            var sID = document.getElementById('customerID').value;
            var req = new Ajax.Request('getCustomerData.jsp', {
                method: 'get',
                parameters: 'id=' + sID,

                onSuccess: function (oXHR, oJson) {
                    displayInfo("responseText: " + oXHR.responseText + 
								"statusText: " + oXHR.statusText);
                },

                onFailure: function (oXHR, oJson) {
                    displayInfo('An error occurred: ' + oXHR.statusText);
                }
            });
}

function displayInfo(sText) {
            document.getElementById('rs').innerHTML = sText;
}


POST 示例
<!--这里的action没有参数哦~~-->
<form id='id_of_form_element' method='post' action='' onsubmit='sendRequest(); return false'>
    name: <input type='text' name='name' /><br />
    age: <input type='text' name='age' /><br />
    <input type='submit' value='Save' />
</form>
<div id='rs'></div>

<script type="text/javascript">
    //取得表单数据并编码
	//name=apq&age=100
    function getFormParams(oForm) {
        var rs = [];
        for (var i = 0, len = oForm.elements.length; i < len; i++) {
            var oField = oForm.elements[i];
            switch (oField.type) {
                case "button": case "submit": case "reset": break;
                case "radio": case "checkbox": if (!oField.checked) { break; }
                case "text": case "hidden": case "password":
                    rs[rs.length] = addPostParam("", oField.name, oField.value);
                    break;
                default:
                    switch (oField.tagName.toLowerCase()) {
                        case "select":
                            rs[rs.length] = addPostParam("", oField.name, oField.options[oField.selectedIndex].value);
                            break;
                        default:
                            rs[rs.length] = addPostParam("", oField.name, oField.value);
                    }
            }
        }
        return rs.join("&");
    }

    function addPostParam(sParam, sKey, sValue) {
        if (sParam.length > 0) sParam += "&";
        return sParam + encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue);
    }
	
	function displayInfo(txt) {
		document.getElementById("rs").innerHTML = txt;
	}

function sendRequest() {
		//注意: 旧的prototype没有提供表单数据编码的方法, 所以这里要手动编下码
        /*var sFormParam = getFormParams(document.forms[0]);
		
        var req = new Ajax.Request('saveCustomerData.jsp', {
            method: 'post',
            parameters: sFormParam,

            onSuccess: function (oXHR, oJson) {
                displayInfo(oXHR.responseText);
            },

            onFailure: function (oXHR, oJson) {
                displayInfo('An error occurred: ' + oXHR.statusText);
            }
        });*/
		
		//哈哈,新的不用手动了
		new Ajax.Request('saveCustomerData.jsp', {
			method: 'post',
			//取得表单数据并编码
			parameters: $('id_of_form_element').serialize(true),
			onSuccess: function (oXHR, oJson) {
                displayInfo(oXHR.responseText);
            },

            onFailure: function (oXHR, oJson) {
                displayInfo('An error occurred: ' + oXHR.statusText);
            }
		});
    }

    </script>


//应答器
	Ajax.Responders.register({
        onCreate: function (oXHR, oJson) {
            document.getElementById('status').innerHTML = "服务器连接中...";
        },

        onComplete: function (oXHR, oJson) {
            document.getElementById('status').innerHTML = "已收到响应";
        }
    });


或者这种方式也是自动编码的
new Ajax.Request('/some_url', {   method: 'get',   parameters: {company: 'example', limit: 12}   });

function getRequestBody(oForm) {
        var oParams = {};
        for (var i = 0, len = oForm.elements.length; i < len; i++) {
            var oField = oForm.elements[i];
            switch (oField.type) {
                case "button": case "submit": case "reset": break;
                case "radio": case "checkbox":
                    if (!oField.checked) { break; }
                case "text": case "hidden": case "password":
                    oParams[oField.name] = oField.value;
                    break;
                default:
                    switch (oField.tagName.toLowerCase()) {
                        case "select":
                            oParams[oField.name] = oField.options[oField.selectedIndex].value;
                            break;
                        default:
                            oParams[oField.name] = oField.value;
                    }
            }

        }
        return oParams;
    }

function sendRequest() {
		new Ajax.Request('saveCustomerData.jsp', {
			method: 'post',
			//取得表单数据并编码
			parameters: getRequestBody(document.forms[0]),
			onSuccess: function (oXHR, oJson) {
                displayInfo(oXHR.responseText);
            },

            onFailure: function (oXHR, oJson) {
                displayInfo('An error occurred: ' + oXHR.statusText);
            }
		});
    }
分享到:
评论

相关推荐

    prototype的Ajax介绍

    ### Prototype的Ajax介绍 #### 一、Prototype框架与Ajax **Prototype** 是一款JavaScript库,其设计目的是为了简化客户端脚本编程。它提供了一系列高级功能,使得开发人员能够更加高效地构建动态网页应用。其中,*...

    prototype-ajax例子

    本示例将探讨如何使用Prototype库进行Ajax交互,通过`AjaxServlet.java`(一个Java后端处理程序)和`ajax2.jsp`(一个JSP页面,用于展示Ajax请求的结果)来实现这一功能。 首先,我们来看`AjaxServlet.java`。这是...

    prototype ajax提交大数据

    当我们谈论“prototype ajax提交大数据”时,我们指的是利用JavaScript的原型链特性来处理通过Ajax异步传输大量数据的问题。 Ajax,即Asynchronous JavaScript and XML,是一种在不刷新整个页面的情况下与服务器...

    Prototype Ajax学习范例

    Prototype.js是JavaScript库,它为Web开发提供了许多实用的功能,特别是在...通过实际操作和调试这些示例,你将能够更好地理解和应用Prototype在现代Web开发中的强大功能,从而构建更加高效、用户体验优秀的Web应用。

    ajax示例java版本

    这个“ajax示例java版本”应该是一个Java实现的Ajax应用,用于演示如何在后台处理和前端交互。 在Java中实现Ajax通常涉及到以下关键知识点: 1. **JavaScript库**:虽然Ajax的核心是JavaScript,但实际开发中我们...

    prototype的ajax应用

    Prototype是JavaScript库,它为浏览器环境提供了许多便利的功能,特别是在处理AJAX(异步JavaScript和XML)方面。...结合`ajaxPrototype.js`这样的示例文件,你可以更好地理解并实践Prototype的AJAX功能。

    Prototype对Ajax的支持

    ### Prototype对Ajax的支持 在Web开发领域中,Ajax(Asynchronous JavaScript and XML)技术的应用极大地提升了用户界面的交互性和响应速度。Prototype JavaScript框架作为一种简化JavaScript编程的工具,它内置了...

    ajax示例(jbuilder 2006)

    总结来说,"ajax示例(jbuilder 2006)"是一个利用Ajax技术实现异步刷新表格的项目,通过XML作为数据交换格式,结合JBuilder 2006的工具和框架,提升了Web应用的交互性和效率。开发者可以通过理解上述步骤和原理,...

    prototype开发手册,AJAX学习必备

    "Onion的天空 » prototype中的ajax对象应用实例.files"可能是与这些文档相关的资源文件,可能包含示例代码或其他辅助材料。 学习Prototype和AJAX可以帮助开发者更高效地构建动态网页,提升用户体验。理解它们的...

    jquery prototype dojo 之 Ajax example and 学习总结

    本文将结合标题“jquery prototype dojo 之 Ajax example 和学习总结”以及描述,深入探讨jQuery、Prototype和Dojo这三种JavaScript库中的Ajax应用,以及相关的学习要点。 首先,jQuery是目前最流行的JavaScript库...

    prototype.js简单实现ajax功能示例

    在给定的示例中,Prototype.js 简化了创建和管理Ajax请求的过程。首先,我们来看一下如何使用 Prototype.js 创建一个简单的Ajax请求: ```javascript function getnodelist() { function onSuccess(request) { ...

    Ajax实战:Prototype与scriptaculous篇

    资源名称:Ajax实战: Prototype与scriptaculous篇内容简介:这是一本讲述 Prototype和 scriptaculous的实用性极强的综合指南。本书在简要介绍这两个库在宏观应用中的意义之后,再通过 QuickGallery图片...

    ajax分页模板示例

    总结来说,这个“Ajax分页模板示例”展示了如何利用Prototype框架和Ajax技术实现高效、流畅的分页功能。通过面向对象的设计,代码结构清晰,易于维护,同时也为其他项目提供了可复用的分页解决方案。对于希望提升...

    深入浅出AJAX源码

    - **库和框架**:可能包括一些流行的AJAX库,如jQuery、Prototype或axios,以及使用这些库的示例。 - **服务器端接口**:为了演示AJAX,可能还包括一些简单的服务器端脚本,如PHP、Python或Node.js,它们提供AJAX...

    SSI中使用Ajax进行操作的例子(prototype.js)

    本示例着重讲解如何在SSI环境下利用Ajax和prototype.js库来执行增删改查操作。以下是对这些技术及其应用的详细阐述: 首先,SSI(Server Side Includes)是一种简单的服务器端脚本语言,它允许开发者在HTML文件中...

    prototype一个简单的ajax例子

    在本示例中,我们使用的是一种JavaScript库——Prototype,它为JavaScript提供了许多实用的工具和功能,包括对Ajax的优雅封装。Prototype简化了Ajax操作,使得开发者可以更方便地与服务器进行异步数据交互。 ...

    AJAX JSP源码示例

    在JSP页面中,使用AJAX时可能涉及到的JavaScript库有jQuery、Prototype、Dojo等,它们提供了更方便的API来处理AJAX请求。例如,jQuery的`$.ajax()`或`$.get()`、`$.post()`方法简化了AJAX操作。 在压缩包中的"Ajax...

    基于ASP的基于Prototype的Ajax无刷新登录实例.zip

    【标题】"基于ASP的基于Prototype的Ajax无刷新登录实例"揭示了这个压缩包内容是关于使用经典ASP(Active Server Pages)技术与Prototype JavaScript库相结合,实现一个无刷新登录功能的示例。在这个实例中,重点是...

    AJAX实战 PROTOTYPE与SCRIPTACULOUS篇 随书源码

    从标签"prototype"我们可以推断,该压缩包内的内容可能包含使用Prototype库进行Ajax开发的相关示例和练习。 压缩包子文件的文件名列表中,我们看到的都是一些可能的项目文件或者章节相关的代码示例: 1. `...

    prototype-1.6.0.3.js+prototype1.4 、1.5中文手册+prototype1.6英文手册

    Prototype是JavaScript库,它为浏览器环境提供了强大的对象扩展和功能,尤其在处理DOM(文档对象模型)和Ajax交互时。这个压缩包包含了Prototype库的多个版本的手册和源代码文件,便于开发者理解和使用。 首先,...

Global site tag (gtag.js) - Google Analytics