我正在将现有的标准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);"
答案 0 :(得分:1)
当您切换到第二个showAdd()
功能时,它不像第一个xmlhttp
功能那样初始化showAdd()
对象,但您的insert()
功能仍在尝试使用xmlhttp,但由于未定义,因此会导致错误。
最好的办法是将insert()
函数切换为使用jQuery,这样你的代码就不会尝试使用xmlhttp
变量。