AJAX未捕获引用错误,原因不明


AJAX Uncaught reference error, unclear why?

我正在将现有的标准JS ajax函数转换为jQuery。到目前为止,我已经成功地转换了除一个以外的所有引用,这似乎导致了一个未捕获的引用错误。

对于我的添加URL功能,我有一个触发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();
}

ajax指向一个从php返回的html表单(我不包括,因为我知道这不是问题的原因)。表单操作指向此处的insert 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');
        }           
    });
};

它吐出了未捕获的引用错误。我知道这不是一个很大的错误,但如果另一个同龄人能看看我错过了什么,那将是有帮助的。谢谢

错误为:第105行:上的"Uncaught ReferenceError:xmlhttp未定义"

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

当您切换到第二个showAdd()函数时,它不会像第一个showAdd()函数那样初始化xmlhttp对象,但您的insert()函数仍在尝试使用xmlhttp,但由于未定义它,因此会导致错误。

最好的方法可能是将insert()函数切换为使用jQuery,这样您的代码就不会试图使用xmlhttp变量。