AJAX没有参考错误,不清楚为什么?

时间:2013-11-23 07:19:36

标签: javascript php ajax jquery

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

对于我的添加网址功能,我有一个触发此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表单(我不会包括因为我知道这不会导致问题)。表单操作在此处指向我的插入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语句并最终在DB中。因为它是上面的代码工作。当我将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);"

1 个答案:

答案 0 :(得分:1)

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

最好的办法是将insert()函数切换为使用jQuery,这样你的代码就不会尝试使用xmlhttp变量。