⑴ jquery ajax 方法中傳遞的data參數,如何在java類中獲取
var params="username="+"1";
$.ajax({
type : "POST", //數據發送方式
url : "../servlet/clearCache",
dataType : "json", //接受數據格式 (這里有很多,常用的有html,xml,js,json)
data:params,//'date='+new Date(), 要傳遞的數據
success : function(msg) {
//console.info(data);
alert(msg.message);
},
error : function () {
alert("請求出錯!");
}
});
例如:
var username="niun";
var password="123";
params="username="+username+"&password="+password;
後台取得:
String username=request.getParameter("username");
String password=request.getParameter("password");
Jquery.Ajax()的data參數類型
類似「uname=alice&mobileIpt=110&birthday=1983-05-12「」這樣的字元串。
除了這三種類型,還可以是JSON字元串,形如:
{"name": "uname", "age": 18}
注意,這個地方不是json對象,是json字元串,字元串,這樣,在後台就可以直接注入到對象中。
當你需要向後台提交一組對象時時,json字元串的好處就體現出來了(對象數組)一般都是用post方法傳遞參數。
在jquery的ajax函數中,可以傳入3種類型的數據:
1.文本:"uname=alice&mobileIpt=110&birthday=1983-05-12"
2.json對象:{uanme:'vic',mobileIpt:'110',birthday:'2013-11-11'}
3.json數組:
[
{"name":"uname","value":"alice"},
{"name":"mobileIpt","value":"110"},
{"name":"birthday","value":"2012-11-11"}
]
所以,可以一鍵獲取表單並提交,非常方便。
⑵ 小白求教,java中怎麼獲取ajax發送的json數據
在JS中,一般是使用eval()函數將JSON的字元串解析成JSON數據格式。
測試代碼如下:
varobj=eval("("+data+")」);//轉為json對象
alert("return_code:"+obj["return_code"]);//彈出json對象return_code屬性
這邊需要注意的是,eval("("+data+")」)要這么寫,裡面還帶了一對括弧。原因在於:eval本身的問題。 由於json是以」{}」的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。
⑶ java怎麼處理ajax
ajax是一種用來改善用戶體驗的技術,其實質是利用瀏覽器內置的一個特殊的對象
(XMLHttpRequest對象,一般稱之為ajax對象)非同步地(當ajax對象發請求時,瀏覽
器不會銷毀當前頁面,用戶任然可以對當前頁面做其他操作)向伺服器發送請求,
伺服器送回部分數據(並不是一個完整的頁面),利用這些數據更新當前頁面。整
個過程,頁面無刷新,不打斷用戶的操作
編程步驟:
step1,獲得ajax對象
比如:
var xhr=getXhr();
step2,發請求:
方式一:get請求
xhr.open('get','check_username.do?username=zs',true);
請求參數、請求資源路徑、是否非同步
注意:
a,get請求必須將請求參數添加到請求資源路徑的後面。
b,true表示非同步請求、false表示同步請求。
非同步請求:發請求時,瀏覽器不會銷毀當前頁面,用戶可以對當前頁面做
其他操作。
同步請求:發送請求時,瀏覽器不會銷毀當前頁面,用戶不可以對當前頁面
做其他操作。
xhr.onreadystatechange=f1;
xhr.send(null);
方式二:post請求
xhr.open('post','','')
step3,編寫伺服器端的處理程序,一般伺服器只需要返回部分的數據。
step4,編寫事件處理函數。
function f1(){
if(xhr.readyState==4){
var txt=xhr.responseText;
使用txt更新當前頁面...
}
}
java伺服器端處理ajax發送的請求,和處理其他請求是一樣的,只是在客戶端頁面表現的不同,比如:執行頁面發送刪除請求,伺服器端在執行刪除後,頁面是需要刷新的。
ajax最經典的用法是驗證碼,注冊頁面如果因為驗證碼輸入錯誤要刷新,之前的信息重填,估計用戶會崩潰,採用ajax非同步發送請求,就不會影響之前填寫的信息
⑷ java後台獲取網頁ajax數據和返回數據簡單源碼
1新建一個servlet xml中相應配置(一般自動)
2創建service方法
3接受參數,做操作,返回數據
比如頁面發送ajax請求到SomeServlet
$.post("SomeServlet的請求路徑",{param:"param"},function(data){
//data為返回的數據以json形式
alert(data.id+""+data.name+""+data.age);
},"json");
Servlet
publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriterout=response.getWriter();
Stringparam=request.getParameter("param");//獲取參數
//你的操作
//返回數據
Stringjson="{"id":1,"name":"張三","age":18}";
out.print(json);
}
⑸ java如何獲取含ajax的網頁數據
其實任何網頁的數據都是由 請求-響應 組成的,谷歌或者火狐 開了F12 選擇網路,點擊那個更多按鈕,你就可以獲取到他訪問的連接,後面不論普通的 httpclient 還是jsoup 都可以獲取到response內容了,個人感覺這樣的返回json的可能性很大,你先試試瀏覽器工具吧
⑹ ajax前台提交數據,Json數據在java後台怎麼取出來
varurl="/test/check";
$.ajax({
type:"post",
url:url,//data:"para="+para,此處data可以為a=1&b=2類型的字元串或json數據。
data:{"para":1},
cache:false,
async:false,
dataType:"json",
success:function(data,textStatus,jqXHR)
{if("true"==data.flag){
alert("合法!");returntrue;
}else{
alert("不合法!錯誤信息如下:"+data.errorMsg);returnfalse;
}
},
error:function(XMLHttpRequest,textStatus,errorThrown){
alert("請求失敗!");
}
});
/**
*校驗
*
*@returnvoid*/
publicvoidcheck(){
Map<String,String>result=newHashMap<String,String>();booleanflag=false;try{
Stringpara=getPara("para");//校驗代碼...
result.put("flag","true");
renderJson(result);//返回json數據
}catch(Exceptione){
result.put("flag",flag+"");
result.put("errorMsg",e.getMessage());
renderJson(result);//返回json數據
e.printStackTrace();
}
}
⑺ Java後台如何獲取前台傳入的ajax數據
獲取ajax數據有兩種方式:
定義和參數相同的變數,可以獲得相對應的名字
可以通過request來獲取相應的值
有的時候還有可能獲取一些cookie和session的值,這個可以用其相對應的方法來獲取
⑻ 如何用JAVA爬取AJAX載入後的頁面
普通的爬取是抓不了js的之後的數據的 可以用phantomjs或者htmlUnit實現
附上phantomjs示列代碼
package cn.wang.utils;
import java.util.Random;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.CookieManager;
import com.gargoylesoftware.htmlunit.;
import com.gargoylesoftware.htmlunit.WebClient;
public class htmlUnitUtils {
static WebClient webClient = null;
static Random random = new Random();
static{
//1.創建對象
webClient = new WebClient(BrowserVersion.CHROME);
//2.設置參數
//啟動js
webClient.getOptions().setJavaScriptEnabled(true);
//關閉css渲染
webClient.getOptions().setCssEnabled(false);
//啟動重定向
webClient.getOptions().setRedirectEnabled(true);
//設置連接超時時間 ,這里是10S。如果為0,則無限期等待
webClient.getOptions().setTimeout(1000 * 15);
//啟動cookie管理
webClient.setCookieManager(new CookieManager());
//啟動ajax代理
webClient.setAjaxController(new ());
//js運行時錯誤,是否拋出異常
webClient.getOptions().(false);
//設置瀏覽器請求信息
webClient.addRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
webClient.addRequestHeader("Accept-Encoding", "gzip, deflate");
webClient.addRequestHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
webClient.addRequestHeader("Connection", "keep-alive");
webClient.addRequestHeader("Upgrade-Insecure-Requests", "1");
}
public static void runJs(String url){
try {
webClient.addRequestHeader("User-Agent", Constant.useragents[random.nextInt(Constant.useragents.length)]);
//等待js渲染執行 waitime等待時間(ms)
webClient.waitForBackgroundJavaScript(1000 * 10);
//3.獲取頁面
webClient.getPage(url);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(webClient != null){
webClient.close();
}
}
}
public static void main(String[] args) {
runJs("http://www.gou.hk/");
System.setProperty("phantomjs.binary.path", "D:\\works\\tool\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe");
}
}
⑼ java如何接收ajax傳遞的json類型的數據
主要是賦值給Map就行。
json數據格式為:
{name:'張三',age:20}這樣的不是數組時,
在java中new一個Map對象獲取,如
Map<String,String> map = (Map<String,String>)request.getParament("json");
然後獲取name為:map.get("name");
如果json數據為數組:
[{name:'張三',age:17},{name:'李四',age:20}]
在java中new一個
List<Map<String,String> maplist = (List<Map<String,String>)request.getParament("json");
⑽ Java怎樣獲取網頁上ajax之後的內容
ajax頁面是動態生成了,直接抓不到。不過也不是沒有途徑的,通常找到該ajax通道地址還是能獲取到裡面的內容的。 從ajax所在頁面可以找到蛛絲馬跡,當然每個頁面都不一樣,所以你別問我要死方法。 我給你指個思路:用火狐瀏覽器,監控頁面信息