jQuery ajax 在ie下面沒有被調(diào)用的原因
來源:程序員人生 發(fā)布時(shí)間:2013-12-09 11:25:14 閱讀次數(shù):3014次
今天發(fā)現(xiàn)jquery 1.7.2 在ie8下面的沒有調(diào)用$.get()方法。
1,然后各種調(diào)試,最后發(fā)現(xiàn):把ie把關(guān)了,再打開$.get()。會(huì)調(diào)用,再第二次調(diào)用的用的時(shí)候發(fā)現(xiàn)又不行了。于是我推斷是ie緩存的問題,把ie緩存清除后,果然可以了。但是客戶不可能知道清理緩存。所以只能自己想辦法了
在網(wǎng)上發(fā)現(xiàn)各大朋友都給了個(gè)方法就是用jquery自帶的方法:
$.ajaxSetup({cache: false });
另外還有分析是,ie是根據(jù)請(qǐng)求的url是不是一樣來是否發(fā)送請(qǐng)求,對(duì)于同一請(qǐng)求,ie只發(fā)送一次http請(qǐng)求,所以同一請(qǐng)求發(fā)送多次,但ie實(shí)際是不會(huì)發(fā)送的。
有了這個(gè)原因:那么就好辦了,可以在url后面加個(gè)時(shí)間戳。
$.get(
"imgsUpload",
{imgsPath:path,timeStamp: new Date().getTime()},
function(data){
}
);
2,以下問題就是個(gè)人問題了,但是請(qǐng)求是能發(fā)送到后臺(tái)了,并且也執(zhí)行了,也返回了.但是不能執(zhí)行ajax的回調(diào)方法。
但在其它瀏覽器是正常的。分析返回過來的data,發(fā)現(xiàn)亂七八糟的。那就是返回時(shí)的數(shù)據(jù)類型不對(duì),我返回的json,但是我想都是以字符串形式返回的,所以我在服務(wù)器端有如下代碼:
response.setContentType("text/plain;charset=UTF-8");
ff,chrome是正常的,但是ie去只能把識(shí)別為text,不能解析成json,所有沒有調(diào)用ajax的回調(diào)方法
經(jīng)過測(cè)試發(fā)現(xiàn),可以不用設(shè)置消息頭,當(dāng)然要設(shè)置也是可以的,但是不是text/plain,而是:
response.setContentType("application/json;charset=UTF-8");
以上問題應(yīng)該是很簡(jiǎn)單的問題,但是好朋友竟然不知道,而且問題綜合在一起了很難發(fā)現(xiàn),特此做筆記。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)