2013-11-23 22 views
0

我正在將我現有的標準JS ajax函數轉換爲jQuery。到目前爲止,我已經成功轉換了所有成員,這似乎是導致未捕獲的引用錯誤。AJAX未捕獲的引用錯誤,不清楚爲什麼?

對於我添加網址的功能,我有一個按鈕,觸發此AJAX功能:

function showAdd(str) 
    { 
    document.getElementById("content01").innerHTML=""; 
    if (str=="") 
    { 
    document.getElementById("content01").innerHTML=""; 
    return; 
    } 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("content01").innerHTML=xmlhttp.responseText; 
    document.getElementById("response").innerHTML = ""; 
    } 
    } 
    xmlhttp.open("GET","addUrlForm.php?addUrl="+str,true); 
    xmlhttp.send(); 
} 

阿賈克斯引導到HTML表單從PHP的呼應(我不會包括因爲我知道這是不是導致問題)。表單動作指導我插入AJAX功能在這裏:

function insert() 
{ 
    var name= encodeURIComponent(document.getElementById('name').value); 
    var releaseTime = encodeURIComponent(document.getElementById('releaseTime').value); 
    var releaseDay = encodeURIComponent(document.getElementById('releaseDay').value); 
    var category = encodeURIComponent(document.getElementById('category').value); 
    var genre = encodeURIComponent(document.getElementById('genre').value); 
    var url= encodeURIComponent(document.getElementById('url').value); 

    xmlhttp.open('get', 'addUrl.php?name='+name+'& releaseTime=' +releaseTime+'& releaseDay=' +releaseDay+'& category=' +category+'& genre=' +genre+'& url=' +url); 
    xmlhttp.onreadystatechange = urlRefresh; 
    document.getElementById("response").innerHTML = "Processing Request. Please wait a moment..."; 
    xmlhttp.send(null); 
    return; 
} 

而從這個函數的數據轉移到一個INSERT語句,並在數據庫中結束。因爲它是上面的代碼正在工作。當我將SHOWADD ajax函數更改爲jQuery時:

function showAdd(str) { 
    $('#response').html('loading...');   
     $.ajax({ 
      type: "GET", 
      url: "addUrlForm.php", 
      data: "addUrl=" + str,           
      success: function(msg) { 
       $('#response').empty(); 
       $('#content01').html(msg).show(); 
      }, 
      error: function() { 
       alert('error'); 
     }   
    }); 
}; 

它吐出未捕獲的引用錯誤。我知道這不是一個巨大的錯誤,但如果另一位同伴的眼睛可以看一看,看看我錯過了什麼會有所幫助。謝謝。

誤差顯示如下:「未捕獲的ReferenceError:XMLHTTP沒有定義」上線105:

"xmlhttp.open('get', 'addUrl.php?name='+name+'& releaseTime=' +releaseTime+'& releaseDay=' +releaseDay+'& category=' +category+'& genre=' +genre+'& url=' +url);"

+0

什麼是錯誤信息的「確切」文本,它是什麼行?而且,我討厭問一個明顯的問題 - jQuery是否包含在您的頁面中? – jfriend00

+0

嗨,錯誤如下:第105行:「未捕獲的ReferenceError:xmlhttp未定義」:「xmlhttp.open('get','addUrl.php?name ='+ name +'&releaseTime ='+ releaseTime +'&releaseDay =' + releaseDay +'&category ='+ category +'&genre ='+ genre +'&url ='+ url);「。 jQuery包含在index.html頁面中,我所有的JS函數都在一個獨立的JS文件中。所有其他功能正在工作,這是唯一一個有錯誤的。 – Corey

+0

我把這個錯誤放到你的問題中,這對任何讀你問題的人來說都更具可讀性和有用性。多行事物在註釋中不可讀。我也寫了一個答案,因爲具體的錯誤提供了關於發生什麼的線索。 – jfriend00

回答

1

當切換到第二showAdd()功能,它不初始化xmlhttp對象像第一showAdd()功能但是,insert()函數仍在嘗試使用xmlhttp,但由於未定義,因此會導致錯誤。

可能最好的辦法是將insert()函數切換爲使用jQuery,因此您的代碼都不會嘗試使用xmlhttp變量。

+0

謝謝,現在生病了。 – Corey

+0

嗨,我把插入函數轉換爲jQuery,一切都在運行。感謝您的幫助。 – Corey