首先要明白ajax的基本格式,参考下面的内容,可以发现,success是请求成功后服务器返回的数据,接收只需要把回调函数的值处理就可以了,如:
response:即为服务器返回的数据。
....
success: function(response){。
console.log(response);。
.....
如果response的个数据:{"id":"123","name":"jghdream"}。
取值的时候可以这样做:
var id = response.id;。
var name = response.name;。
以下是ajax的一些参数:
$.ajax({
type:'post',。
url:'/testajax.php',。
dataType:'json',。
data:{uid:uid,rands:Math.random()},。
success: function(){。
alert('ajax return success');。
}});
url,类型:String,默认值: 当前页地址。发送请求的地址。
data, 类型:String,发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。
dataType,类型:String,预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:。
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串。
success,当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
$.ajax({
url:"(你要请求的url地址)",。
data:{
"key1" : "value1",。
"key2" : "value2"。
},
type:"post", //此处传递方式可以是get也可以是post。
dataType:"json", //后台要返回的数据形式。
success:function(data){//请求成功的要执行的回调函数。
console.log('请求成功');。
console.log(data);。
},
error:function(msg){//请求失败的要执行的回调函数。
console.log('请求失败');。
console.log(msg);。
});
另外,获取回来是json对象,你要用js处理为js对象,调用eval()用法可以参考百度。然后用数组形式进行调用数据即可。
JS里面写ajax发送请求到页面,页面返回数据提示结果:
--------------------------------------------------JS代码----------------------------------------------------。
function trimRepID(s){return s.replace(/^\s+|\s+$/g,"");} //去点字符串的空格的函数。
---encodeURI();//UTF-8编码的转换。
//先声明一个异步请求对象
var xmlHttpReg = null;。
if (window.ActiveXObject) {。
//如果是IE
xmlHttpReg = new ActiveXObject("Microsoft.XMLHTTP");。
} else if (window.XMLHttpRequest) {。
xmlHttpReg = new XMLHttpRequest();。
//实例化一个xmlHttpReg。
//发送请求 方式、路径、权限。
xmlHttpReg.open("POST","http://******.jsp?DDD="+repId, true);。
//设置头部信息,让它用utf-8发送,不然中文可能会乱码。
xmlHttpReg.setrequestheader("content-type","application/x-www-form-urlencoded"); 。
xmlHttpReg.onreadystatechange = function () 。
if (xmlHttpReg.readyState == 4 && xmlHttpReg.status == 200) 。
{ }
else{}
xmlHttpReg.send(null);。
alert("JSOn");//。
var flags=xmlHttpReg.responseText;。
alert(flags);//返回结果的responseText。
var flagf=JSON.stringify(flags);。
alert(flagf);//OBJECT转化成STRING。
if(flagf.indexOf("tu")>0){alert(" SUCCESSFULLY");} //对结果进行搜索结果,匹配返回值的位置,有即表示成功吗,无就是失败。
else{alert("FAILED TO SAVE");}。
---------------jsp操作数据代码------------------------------------。
<script>
window.onload=
function () {
alert("IDBC BE");。
<%
System.out.println("Connections");。
//获取AJAX传递过来的参数。
String operID= request.getParameter("operID");。
System.out.println(operID);。
response.setContentType("text/html");。
PrintWriter outa = response.getWriter();。
if(operID!=null){。
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();。
String url = "jdbc:oracle:thin:@***:**:**";。
//orcl为你的数据库的SID。
String user = "***";。
String password = "***";。
//用户名和密码
Connection conn = DriverManager.getConnection(url, user, password);。
Statement stmt = conn.createStatement。
(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);。
//建立链接
String sql = "";。
//插入数据库的语句
ResultSet rs = stmt.executeQuery(sql);。
String result="tu";。
rs.close();
stmt.close();
conn.close();
System.out.println(result);。
outa.print(result);。
} catch (Exception e) {。
//返回异常信息
e.printStackTrace();。
String result="fa";。
outa.print(result);。
}}
%>
</script>。
--------------------------jsp代码写在了js中-----------。
返回成功----tu 失败---fa。
jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以。
代码示例如下:
复制代码 代码如下:
$('#send').click(function () {。
$.ajax({
type : "GET",。
url : "a.php",。
dataType : "jsonp",。
success : function (data) {。
$.each(data.items, function (i, item) {。
$("<img class='para'/> ").attr("src", item.media.m).appendTo("#resText");。
if (i == 3) {。
return false;。
}。
});。
}
});
});
$.ajax方法如下:
复制代码 代码如下:
$.ajax({
type: "POST",。
url: ctxRoot+'FolderAction!saveInformSetting.action',。
data: 'jsonStr=' + inform_settingListStr,。
dataType: "json",。
complete: function(data){。
//在这里做些事情,假设返回的json数据里有name这个属性。
//有时候可以直接data.name或者data['name']去访问。
//但有时候,却要通过var jsonData = eval("("+data.responseText+")");才可以通过jsonData.name访问,而且这种情况下,需要是complete而不是success。
}
});
$.ajax(options)。
这是最根本的JQuery Ajax方法,只有一个参数options,该options参数中包含了请求信息和回调函数的信息。参数内容都是key:value对形式出现,并且都是可选的。
语法如下:
$.ajax({options});。
url:(string)发送请求的地址,可以是服务器页面也可以是WebService动作。
type:(string)请求方式,POST或GET。
data:(object)向服务器发送请求时带去的数据。是key:value对形式,如:{name:"grayworm",sex:"male"},如果是数组{works:["work1","work2"]}。
dataType:(string)预期返回的数据类型。xml,html,json,text等。
beforeSend:(Function)发送ajax请求前被触发,如果返回false则取消本次请求。如果异步请求需要显示gif动画,那应当在这里设置相应<img>的可见。
ajax跨域失败,是因为js遵循同源规则,即不同域名下的js访问是不被允许的(安全考虑),那么如何解决,主要有三个方法,第一个是修改服务器(如果是别人的服务器,就没办法了,所以这个不多说,网上会有具体的操作),说一下客户端就能解决的2个办法,第一个,ajax返回数据,也就是dataType类型设置为jsonp,jsonp是专门为解决跨域问题而生的,具体用法自行百度,第二个方法,我最近也在用的,亲测有效,就是先用自己服务器后台执行curl,抓取目标服务器上的文件,在用前端ajax获取服务器后台获取到的目标服务器文件结果即可。
原文地址:http://www.qianchusai.com/ajax%E8%AF%B7%E6%B1%82%E8%BF%94%E5%9B%9E%E6%95%B0%E6%8D%AE-80.html