`

JQuery的Ajax提交

阅读更多
    鉴于项目需要,开始边看Demo边使用JQuery。现将项目中暂时遇到的三种使用JQuery进行Ajax提交的方式做个总结。因为没有系统学习,有点山寨,只求在项目中实现功能。
    1.URL+GET参数提交
       这种方式是最普遍的,只要包含jquery.js就可以正常使用。
     
  
			$.ajax({
			    type: "get",
			    url: "/openshop/control/getCustomerAddress",
       data:"customerId="+$.trim($("#customerId")[0].value),
			    cache: false,
			    success: function(msg){
			     	  $("#addressInfo")[0].innerHTML = msg;
			     	  showTipWindow(newid,oldid,0,e);
		   	}
			}); 
      


    2.整个form的提交
        如果不使用JQuery的form ajax提交,则必须手动组装所有的表单元素键值对。现在使用JQuery的一个插件:jquery.form.js。将jquery.js,jquery.form.js文件都包含到项目中。然后使用如下代码:
      
$('#'+newid+'_frmNewAddr').ajaxForm({ beforeSubmit: validate ,success: showResponse});

....

function validate(formData, jqForm, options){
    var form = jqForm[0]; 
    if (!form.new_recipient.value ) { 
        alert('收件人必须填写!'); 
        return false; 
    } 
    if (!form.new_address.value ) { 
        alert('收件地址必须填写!'); 
        return false; 
    } 

   ....

   return true; 
}

function showResponse(responseText, statusText, xhr, $form){
	var address = eval("("+removeDivTag(responseText)+")"); 
	$("#address_recipient")[0].innerHTML = address.recipient;
	$("#address_address")[0].innerHTML = address.address;
	$("#address_organization")[0].innerHTML = address.organization;
         ......
}
       

      其中$('#'+newid+'_frmNewAddr')获取表单对象,其中beforeSubmit对应的validate()是一个表单提交前调用的方法,可以在此方法中做表单验证,只有该方法返回true,表单才会提交。而success对应的showResponse则是ajax对象成功返回后的回调方法,可以将回调得到的内容无刷新呈现到当前页面的相应区域中。较方便的做法是在服务器端以JSON格式返回数据,然后在回调函数中使用eval("("+removeDivTag(responseText)+")")方法获取具有指定结构的js对象。

     3.使用JQuery做文件上传的ajax提交
     本人寻找并比较了多种ajax或类ajax方式上传文件的做法,譬如使用iframe等。最终觉得使用JQuery是最方便的,不知各位使用后是否与我有同感。我将我目前的做法总结如下,首先须在项目中包含jquery.js,ajaxfileupload.js,ajaxfileupload.css。
<script type="text/javascript">
function ajaxFileUpload(imgName)
{
	$("#loading")
	.ajaxStart(function(){
		$(this).show();
	})
	.ajaxComplete(function(){
		$(this).hide();
	});

	$.ajaxFileUpload
	(
		{
			url:'/productmgr/control/uploadProductImg',
			secureuri:false,
			fileElementId: imgName+'File',
			dataType: 'text',
			success: function (data, status)
			{
				data = removeDivTag(data);
				if(data=="ImgEmptyErr"){
					alert("请选择上传图片!");
					return;
				}
				if(data=="sysErr"){
					alert("上传失败,请重试!");
					return;
				}
				$("#"+imgName)[0].value = data;
				$("#"+imgName+"Div")[0].innerHTML = "上传成功!"
				//alert($("#"+imgName)[0].value);
			},
			error: function (data, status, e)
			{
				alert("添加产品图片时发生如下错误:"+e);
			}
		}
	)	
	return false;

}
</script>

      本人服务器端使用的是beanshell脚本,代码如下:
/*
 * 产品图片上传
 * 
 * author : Emerson
 *
 * Yiihee , Inc. */


import org.ofbiz.base.util.*;
import org.ofbiz.base.util.string.*;
import org.ofbiz.entity.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
import org.apache.commons.fileupload.*;


	configProperties = UtilProperties.getProperties("opencommon.properties");
	String imageUploadServerPath = configProperties.get("openb2c.image.upload.server.path");

	//SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");   
	//Date date = new Date();   
	//String filename = sf.format(date);
	String fileName;

	File uploadPath = new File(imageUploadServerPath);//上传文件目录
    if (!uploadPath.exists()) {
       uploadPath.mkdirs();
    }
    // 临时文件目录
    File tempPathFile = new File(imageUploadServerPath+"\\temp\\");
    if (!tempPathFile.exists()) {
       tempPathFile.mkdirs();
    }
    try {
       // Create a factory for disk-based file items
       DiskFileItemFactory factory = new DiskFileItemFactory();
 
       // Set factory constraints
       factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
       factory.setRepository(tempPathFile);//设置缓冲区目录
 
       // Create a new file upload handler
       ServletFileUpload upload = new ServletFileUpload(factory);
 
       // Set overall request size constraint
       upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
 
       List items = null;
       items = upload.parseRequest(request);//得到所有的文件
       
       if(items==null||items.size()==0){
    	   String msg = "ImgEmptyErr";
    	   context.put("result", msg);
    	   return;
       }
       
       Iterator i = items.iterator();
       
       //此处实际只有一个文件
       while (i.hasNext()) {
           FileItem fi = (FileItem) i.next();
           fileName = fi.getName();
           if (!UtilValidate.isEmpty(fileName)) {
		       File fullFile = new File(fi.getName());
        	   //File fullFile = new File(filename);
		       File savedFile = new File(uploadPath, fullFile.getName());
		       int j = 0;
		       while(savedFile.exists()){
		    	   j++;
		    	   savedFile = new File(uploadPath, savedFile.getName().substring(0,savedFile.getName().lastIndexOf(".")-1)+"("+j+")"+savedFile.getName().substring(savedFile.getName().lastIndexOf("."),savedFile.getName().length()));
		       }
		       fi.write(savedFile);
		       fileName = savedFile.getName();
           }else{
        	   String msg = "ImgEmptyErr";
        	   context.put("result", msg);
        	   return;
           }           
       }
       context.put("result", fileName);
    } catch (Exception e) {
    	Debug.log("上传产品图片发生错误:"+e);
    	String msg = "sysErr";
    	context.put("result", msg);
    	return;
    }

  然后将result结果渲染到freemarker模板,并经回调函数解析后展示给用户。

总结:JQuery强大异常,本文仅从自身使用角度列举了其部分用法,未曾深究最新最优最简用法,暂以此文作为经验总结,以待日后参考修正。代码片段山寨之处实属本人技拙,而非JQuery之过。   


分享到:
评论

相关推荐

    使用jQuery ajax提交表单代码

    在“使用jQuery ajax提交表单代码”的资源中,我们可以期待看到一个清晰的示例,展示如何将表单数据发送到服务器,并处理响应。 1. **jQuery的$.ajax()函数** - **基本语法**:`$.ajax({ options });` - **选项...

    spring框架项目+jQueryAjax提交实例。jquery-3.3.1.min.js

    标题中的"spring框架项目+jQueryAjax提交实例"指的是一个整合了Spring框架和jQuery AJAX技术的Web应用程序项目。这个项目提供了一个完整的流程,演示了如何在前端使用jQuery的AJAX功能向后端Spring MVC控制器发送...

    JQuery Ajax提交整个表单

    在Web开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理以及Ajax交互等任务。...理解这些概念和用法,能够帮助开发者在jQuery 1.3.2或其他版本中高效地实现表单的Ajax提交。

    ajax提交表单到后台

    ### 一、前端:使用jQuery的AJAX提交表单 1. **引入jQuery库**:首先确保在HTML文件中引入了jQuery库。可以使用CDN链接或本地文件,例如: ```html &lt;script src="https://code.jquery....

    JQuery AJAX提交中文乱码的解决方案

    总结来说,解决JQuery AJAX提交中文乱码问题的关键在于确保客户端和服务器端字符编码的一致性。可以通过在AJAX请求中显式地设置字符集为UTF-8来解决,从而让服务器端能够正确地解码请求中的中文字符。这不仅适用于GB...

    jquery ajax提交整个表单元素的快捷办法

    本文将深入探讨如何使用jQuery的Ajax方法快速提交整个表单元素,包括涉及的关键知识点和代码示例。 首先,让我们了解jQuery的`serialize()`函数。这个函数能够将表单中的所有可序列化元素(如input、textarea、...

    jQuery Ajax无刷新提交表单并执行邮件通知

    $mail-&gt;Body = '这是一封由jQuery Ajax提交表单触发的邮件。'; if(!$mail-&gt;send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail-&gt;ErrorInfo; } else { echo 'Message has been sent'; ...

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

    ### jQuery AJAX提交表单方法概述 在Web开发中,通过Ajax提交表单是一种常见的需求,它允许我们在不刷新页面的情况下发送数据到服务器,并根据服务器返回的结果进行相应的处理。使用jQuery进行AJAX操作可以大大简化...

    jquery+ajax实现无刷新提交的功能

    ### 使用jQuery与Ajax实现网页无刷新提交功能 在现代Web开发中,为了提供更好的用户体验,很多网站都会采用Ajax技术来实现在不刷新整个页面的情况下进行数据的提交与更新。本篇文章将详细介绍如何利用jQuery库结合...

    jquery ajax提交表单数据的两种方式

    在本文中,提到了JQuery AJAX提交表单数据的两种方式:一种是通过URL参数提交数据,另一种是通过表单提交(Form Submit)。在实际开发中,如何选择这两种方式主要取决于需要提交的数据量和具体的应用场景。 首先,...

    asp+jquery ajax实例源码,添加,删除,修改,分页

    - 在前端,jQuery监听表单提交事件,阻止默认的表单提交行为,然后使用$.ajax()发送包含新数据的POST请求到ASP服务器端脚本。 - ASP接收到请求后,通过ADO(ActiveX Data Objects)处理数据库操作,如使用SQL ...

    按钮的Ajax请求时一次点击两次提交的解决方法

    在JQuery中,可以编写如下代码来防止重复提交: ```javascript $(function(){ $('#submit').click(function(){ var createGenreForm = $('#createGenreForm'); if(createGenreForm.valid()){ var obj = { Name...

    jquery ajax提交表单数据的两种实现方法

    Jquery AJAX提交表单有两种方式,一是url参数提交数据,二是form提交(和平常一样在后台可以获取到Form表单的值)。在所要提交的表单中,如果元素很多的话建议用第二种方式进行提交,当然你要是想练练“打字水平”的...

    jQuery+ajax实现局部刷新的两种方法

    本文将介绍使用jQuery和ajax来实现页面局部刷新的两种方法。对于jQuery,它是一个快速、小巧、功能丰富的JavaScript库,通过它可以轻松操作DOM,而ajax允许我们实现无需重新加载整个页面就可以更新网页的部分内容。 ...

    Ajax使用jQuery提交表单

    本篇文章将深入探讨如何使用jQuery来实现Ajax提交表单。 一、jQuery与Ajax基础 jQuery通过其内置的$.ajax()函数提供了对Ajax的封装。这个函数允许开发者发送异步HTTP请求,获取服务器端的数据,并在不刷新整个页面...

    jQuery Ajax过滤器

    **jQuery Ajax过滤器详解** 在Web开发中,Ajax...结合`AjaxForm`插件,我们可以轻松地实现表单的Ajax提交,同时保持数据的正确性。在实际开发中,灵活运用这些工具和技巧,能够提升Web应用的性能和用户体验。

    jqueryajax jquery ajax

    1. **表单提交**:通过AJAX,可以实现无刷新表单提交,提高用户体验。 2. **动态加载内容**:如分页、下拉刷新等,只更新页面的一部分,而不是整个页面。 3. **实时更新**:例如聊天应用,实时显示新消息。 4. **...

    jquery ajax在asp.net中的应用

    // 使用jQuery AJAX提交表单 $.ajax({ // ... }); } }); ``` 当表单验证通过后,`submitHandler`会触发AJAX请求,将表单数据发送到服务器。服务器接收到请求,处理数据并返回结果。客户端再根据返回的JSON...

Global site tag (gtag.js) - Google Analytics