2011-12-16 123 views
0

我正在學習Ajax和我現在面臨一些問題,這個非常基本的功能:基本AJAX功能

功能fetchData(網址,的objectID){

var pageReqtest=null; 
    if(window.XMLHttpRequest)pageRequest=new XMLHttpRequest(); 
    if(window.ActiveXObject)pageRequest=new ActiveXObject("Microsoft.XMLHTTP"); 
    else return false; 

    pageRequest.onreadystatechange= function(){ 
     var object=document.getElementById(objectID); 
     object.innerHTML = pageRequest.responseText; 
    } 

    pageRequest.open("GET",url,true); 
    pageRequest.send(null); 

}

後來才知道有:

<div id="control" onclick="fetchData('data.jsp','message');">Click here for Ajax!</div> 
 

但不幸的是,它不工作,但功能雖然正確地調用。

我在Eclipse中有我的項目,我在Tomcat 6上運行這個頁面,data.jsp是它的一行html,data.jsp與JavaScript函數所在的頁面位於相同的層書面

你有什麼建議嗎?

回答

0

我最好的選擇是,它是由您的拼寫錯誤的function語法錯誤:

pageRequest.onreadystatechange= fucntion(){ 

這將導致的Javascript沒有被解析,讓你的函數永遠不會被定義。


在不同的音符,還有其他幾個小錯誤,雖然他們可能不會阻止你的代碼的工作,可能會使您的生活困難。

var pageReqtest=null; 

在其他地方你叫變量pageRequest。保持一致:目前,您正在創建一個名爲pageRequest的全局變量,並完全忽略了本地變量pageReqtest

if(window.XMLHttpRequest)pageRequest=new XMLHttpRequest(); 
if(window.ActiveXObject)pageRequest=new ActiveXObject("Microsoft.XMLHTTP"); 
else return false; 

如果瀏覽器都window.XMLHttpRequestwindow.ActiveXObject,您將創建兩個,第一個XMLHttpRequest對象,那麼你將與ActiveXObject的覆蓋。這不是你想要的 - 這是不理想的,如果可用,最好使用正確的XMLHttpRequest。

執行此操作的快速方法是在第一行創建第二行else if

你錯過了在getElementById呼叫ID:

var object=document.getElementById(); 

我想這應該是:

var object = document.getElementById(objectID); 
+0

嗨,謝謝你的回覆,我已經糾正了所有的錯別字,現在它的部分工作,我現在使用絕對URL onclick =「fetchData('WEB-INF/views/data.jsp','message 「);」獲取文件data.jsp,但tomcat給了我一個404,也是,我是春天框架,當我點擊與事件處理程序的div,它激活一個控制器,通常只適用於我會發送一個窗體或點擊一個鏈接adressess該控制器 – JBoy 2011-12-16 23:24:26

0

拼寫錯誤旁邊,由lonesomeday提到

你也有缺失參數var object=document.getElementById();