ajax调用java后台方法是什么 ajax怎么传值到后台,java的
今天给各位分享ajax调用java后台方法是什么的知识,其中也会对ajax怎么传值到后台,java的进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
Ajax()方法如何与后台交互
Ajax全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。Ajax技术是目前在浏览器中通过JavaScript脚本可以使用的所有技术的集合。Ajax以一种崭新的方式来使用所有的这些技术,使得古老的B/S方式的Web开发焕发了新的活力。
ajax()方法是jQuery底层的ajax实现,通过HTTP请求加载远程数据。
$.ajax({
type:"GET",
url:"handleAjaxRequest.action",
data:{paramKey:paramValue},
async: true,
dataType:"json",
success: function(returnedData){
alert(returnedData);
//请求成功后的回调函数
//returnedData--由服务器返回,并根据 dataType参数进行处理后的数据;
//根据返回的数据进行业务处理
},
error: function(e){
alert(e);
//请求失败时调用此函数
}
});
}
参数说明:
type:请求方式,“POST”或者“GET”,默认为“GET”。
url:发送请求的地址。
data:要向服务器传递的数据,已key:value的形式书写(id:1)。GET请求会附加到url后面。
async:默认true,为异步请求,设置为false,则为同步请求。
dataType:预期服务器返回的数据类型,可以不指定。有xml、html、text等。
在开发中,使用以上参数已可以满足基本需求。
如果需要向服务器传递中文参数,可将参数写在url后面,用encodeURI编码就可以了。
var chinese="中文";
var urlTemp="handleAjaxRequest.action?chinese="+chinese;
var url= encodeURI(urlTemp);//进行编码
$.ajax({
type:"GET",
url: url,//直接写编码后的url
success: function(returnedData){
alert(returnedData);
//请求成功后的回调函数
//returnedData--由服务器返回,并根据 dataType参数进行处理后的数据;
//根据返回的数据进行业务处理
},
error: function(e){
alert(e);
//请求失败时调用此函数
}
});
}
struts2的action对请求进行处理:
public void handleAjaxRequest(){
HttpServletRequest request= ServletActionContext.getRequest();
HttpServletResponse response= ServletActionContext.getResponse();
//设置返回数据为html文本格式
response.setContentType("text/html;charset=utf-");
response.setHeader("pragma","no-cache");
response.setHeader("cache-control","no-cache");
PrintWriter out=null;
try{
String chinese= request.getParameter("chinese");
//参数值是中文,需要进行转换
chinese= new String(chinese.getBytes("ISO--"),"utf-");
System.out.println("chinese is:"+chinese);
//业务处理
String resultData="hello world";
out= response.getWriter();
out.write(resultData);
//如果返回json数据,response.setContentType("application/json;charset=utf-");
//Gson gson= new Gson();
//String result= gson.toJson(resultData);//用Gson将数据转换为json格式
//out.write(result);
out.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
if(out!= null){
out.close();
}
}
}
struts.xml配置文件:不需要写返回类型
<action name="handleAjaxRequest" class="com.test.TestAction"
method="handleAjaxRequest">
</action>
分享AJAX前后台交互方法
注:ajax通过async参数决定是异步还是同步,false同步,true异步;
异步执行顺序是先执行后续动作,再执行success里代码;
同步是先执行success里代码,再执行后续代码;
验证:同步时数据量大是否会卡顿?例如从后台搜索大量数据时,页面是否卡死?
1、(异步)方法调用,后续代码不需要等待它的执行结果
后台<C#>:
using System.Web.Script.Services;
public static string GetStr(string str1, string str2)
{
return str1+ str2;
}
前台<JQuery>:
function Test(strMsg1,strMsg2)
{
$.ajax({
type:"Post",
url:"Demo.aspx/GetStr",
async: true,
//方法传参的写法一定要对,与后台一致,区分大小写,不能为数组等,str1为形参的名字,str2为第二个形参的名字
data:"{'str1':'"+strMsg1+"','str2':'"+strMsg2+"'}",
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function(data){
//返回的数据用data.d获取内容
alert(data.d);
},
error: function(err){
alert(err);
}
});
//隐藏加载动画
$("#pageloading").hide();
}
2、(同步)方法调用,可用于需要得到返回值是执行后续代码的前提
后台<C#>:
using System.Web.Script.Services;
public static string GetStr(string str1, string str2)
{
return str1+ str2;
}
前台<JQuery>:
function Test(strMsg1,strMsg2)
{
var str=“”;
$.ajax({
type:"Post",
url:"Demo.aspx/GetStr",
async: false,
//方法传参的写法一定要对,与后台一致,区分大小写,不能为数组等,str1为形参的名字,str2为第二个形参的名字
data:"{'str1':'"+strMsg1+"','str2':'"+strMsg2+"'}",
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function(data){
//返回的数据用data.d获取内容
str= data.d;
},
error: function(err){
alert(err);
}
});
return str;
jquery ajax json java后台怎么处理
一、$.ajax的一般格式
[javascript] view plain copy
$.ajax({
type:'POST',
url: url,
data: data,
success: success,
dataType: dataType
});
二、$.ajax的参数描述
参数描述
url必需。规定把请求发送到哪个 URL。
data可选。映射或字符串值。规定连同请求发送到服务器的数据。
success(data, textStatus, jqXHR)可选。请求成功时执行的回调函数。
dataType
可选。规定预期的服务器响应的数据类型。
默认执行智能判断(xml、json、script或 html)。
[javascript] view plain copy
//1.$.ajax带json数据的异步请求
var aj=$.ajax({
url:'productManager_reverseUpdate',//跳转到 action
data:{
selRollBack: selRollBack,
selOperatorsCode: selOperatorsCode,
PROVINCECODE: PROVINCECODE,
pass2: pass2
},
type:'post',
cache:false,
dataType:'json',
success:function(data){
if(data.msg=="true"){
// view("修改成功!");
alert("修改成功!");
window.location.reload();
}else{
view(data.msg);
}
},
error: function(){
// view("异常!");
alert("异常!");
}
});
//2.$.ajax序列化表格内容为字符串的异步请求
[javascript] view plain copy
function noTips(){
var formParam=$("#form1").serialize();//序列化表格内容为字符串
$.ajax({
type:'post',
url:'Notice_noTipsNotice',
data:formParam,
cache:false,
dataType:'json',
success:function(data){
}
});
}
//3.$.ajax拼接url的异步请求
[javascript] view plain copy
var yz=$.ajax({
type:'post',
url:'validatePwd2_checkPwd2?password2='+password2,
data:{},
cache:false,
dataType:'json',
success:function(data){
if( data.msg=="false")//服务器返回false,就将validatePassword2的值改为pwd2Error,这是异步,需要考虑返回时间
{
textPassword2.html("<font color='red'>业务密码不正确!</font>");
$("#validatePassword2").val("pwd2Error");
checkPassword2= false;
return;
}
},
error:function(){}
});
//4.$.ajax拼接data的异步请求
[javascript] view plain copy
$.ajax({
url:'${basePath}/jobs/Dictionary/post',
type:'post',
data:'merName='+values,
async: false,//默认为true异步
error:function(){
alert('error');
},
success:function(data){
//后台传过来的是list<Map>或者是list<Object>
var jsonObj=eval("("+data+")");
$.each(jsonObj, function(i, item){
//$("#taskClass").append("<option value='"+item.+"."+item.fieldName+"'>"+item.statuDesc+"</option>");
alert(item.value+","+ item.desc);
});
$("#"+divs).html(data);
}
});
后台action
JSON-lib这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean。
下载地址:http://json-lib.sourceforge.net/
还要需要的第3方包:
org.apache.commons(3.2以上版本)
org.apache.oro
net.sf.ezmorph(ezmorph-1.0.4.jar)
nu.xom
[java] view plain copy
@RequestMapping(value="post")
public void post(HttpServletRequest request,HttpServletResponse response){
List<Map<String,String>> listMap= new ArrayList<Map<String,String>>();
for(int i= 0; i< 6; i++){
Map<String,String> map= new HashMap<String,String>();
map.put("value","id"+i);
map.put("desc", i+"");
listMap.add(map);
}
System.out.println(JSONArray.fromObject(listMap).toString());
StringUtil.write(response, JSONArray.fromObject(listMap).toString());
}
public static void write(HttpServletResponse response,String message){
try{
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
response.getWriter().write(message);
response.getWriter().flush();
} catch(IOException e){
e.printStackTrace();
}
}
ajax怎么传值到后台,java的
给你个例子,用得servlet,你可以改改
index.html
<html>
<head>
<title>第1个ajax例子</title>
<script type="text/javascript">
var xmlHttp;//局部刷新的关键,通过这个对象与服务器连接
//将xmlHttp实例化
function init()
{
try{
xmlHttp= new ActiveXObject('Msxml2.XMLHTTP');
}
catch(e)
{
try{
xmlHttp= new ActiveXObject('Microsoft.XMLHTTP');
}
catch(e)
{
try{
xmlHttp= new XMLHttpRequest();
}catch(e){}
}
}
}
//调用此方法与服务器互动
function ajax(name)
{
init();
if(name.length==0)
{
document.getElementById("divname").innerHTML="必须输入用户名";
document.getElementById("name").focus();
return;
}
var url="ajax?name="+name+"&&date="+Date();//向servlet传递参数
xmlHttp.open("get",url,true);//向servlet传递参数,设置传递模式和url
xmlHttp.onreadystatechange=handleCheckName;//设置回调方法为handleCheckName
xmlHttp.send(null);
}
function handleCheckName()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
if(xmlHttp.responseText=="1")//xmlHttp.responseText为服务器返回的数据
{
document.getElementById("divname").innerHTML="对不起,用户已存在!";
document.getElementById("divname").style.color="black";
}
if(xmlHttp.responseText=="2")
{
document.getElementById("divname").innerHTML="用户名只能是3-10位字母,数字";
document.getElementById("divname").style.color="black";
}
if(xmlHttp.responseText=="3")
{
document.getElementById("divname").innerHTML="恭喜你,用户名可以继续注册!";
document.getElementById("divname").style.color="red";
}
}
}
}
</script>
</head>
<body>
<input type="text" name="name" onkeyup="ajax(this.value);"/>
<div id="divname"></div>
</body>
</html>
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<servlet>
<servlet-name>ReturnName</servlet-name>
<servlet-class>ajax.servlet.ReturnName</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ReturnName</servlet-name>
<url-pattern>/ajax</url-pattern>
</servlet-mapping>
</web-app>
ReturnName.java
package ajax.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ReturnName extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
String name=request.getParameter("name");
int a=0;
if(name.equals("asdasd")){
a=1;
}else if(!name.matches("[a-zA-Z0-9]{3,10}")){
a=2;
}else{
a=3;
}
response.getWriter().print(a);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
doGet(req,resp);
}
}
OK,关于ajax调用java后台方法是什么和ajax怎么传值到后台,java的的内容到此结束了,希望对大家有所帮助。