Posted on 2009-10-22 21:00
S.l.e!ep.¢% 閱讀(1251)
評論(0) 編輯 收藏 引用 所屬分類:
HTML
我經常碰見這樣的問題 我想用JS執行后臺方法,為什么有時候執行,有時候不執行 代碼如下: var request; HTML code
function createRequest() { try { request = new XMLHttpRequest(); } catch (trymicrosoft) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (othermicrosoft) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { request = false; } } } if (!request) alert("Error initializing XMLHttpRequest!"); } createRequest(); var requesturl = ' <%=request.getContextPath()%>/trainplan/addLeafNode.shtml?objectivename='+document.all.objectivename.value+'&objectivecontent='+document.all.objectivecontent.value+"&paterid="+paterid; request.open("GET", requesturl, true); request.onreadystatechange = openResponse; 按道理說,AJAX應該執行 <%=request.getContextPath()%>/trainplan/addLeafNode.shtml 地址后臺里面的方法 因為我里面有修改數據庫的操作 但有時候添加數據庫記錄,有時候不添加數據庫記錄,到底怎么解決,我只想搞明白,沒別的意思 那位大大能解釋一下 我后臺代碼肯定沒問題,如果我是正常提交,然后頁面刷新的話,是正確的
1樓 2004-01-01 00:00 IamHades? [引用] [回復]?
?
這是get方式提交時的緩存問題,說到底是ie惹的禍,你加一句 request.setRequestHeader("If-Modified-Since","0"); 在request.open("GET", requesturl, true); 前就可以了?
?
?
?2樓 2004-01-01 00:00 junjunweiwei? [引用] [回復]?
?
引用 1 樓 IamHades 的回復: 這是get方式提交時的緩存問題,說到底是ie惹的禍,你加一句 request.setRequestHeader("If-Modified-Since","0"); 在request.open("GET", requesturl, true); 前就可以了 謝謝,我還想問下如果有post方式提交呢??
?
?
?3樓 2004-01-01 00:00 showbo? [引用] [回復]?
?
post提交不存在緩存問題?
?
?
?4樓 2004-01-01 00:00 lanxiaoshi? [引用] [回復]?
?
再加一個隨機數 a.jsp?temp=new Date().getTime()?
?
?
?5樓 2004-01-01 00:00 only_endure? [引用] [回復]?
?
request.setRequestHeader("cache-control","nocache");?
?
?
?6樓 2004-01-01 00:00 Imore? [引用] [回復]?
?
長了見識了 謝謝啊 我想再問一下 request.setRequestHeader("If-Modified-Since","0"); 和 request.setRequestHeader("cache-control","nocache"); 區別是什么呢 另外我在使用request.setRequestHeader("If-Modified-Since","0"); 時候會報錯執行不下去 求教問題所在?
?
?
?7樓 2004-01-01 00:00 only_endure? [引用] [回復]?
?
你只要明白你在ajax操作提交異步請求時,如果你設置了服務器端頁面緩存,則請求的內容是“未更新的”,所以給你的表象是用戶觀看的頁面不變。 還有另一種方法解決這一問題,就是你在request.open("GET", requesturl, true)中修改requesturl的內容(增加參數,時間戳即可)這樣的目的就是在服務器端理解為新的請求,不會將緩存中的內容回傳過去.更新內容就會顯示在客戶端頁面了.??
?