我正在将现有的标准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
变量。