AJAX:Javascript函数在使用AJAX加载内容后不起作用
目前,我遇到的问题是,在使用ajax加载第一个内容后,javascript功能无法正常工作。我尝试了其他解决方案,但大多数都是jquery格式。我的是javascript格式。我尝试创建一个简单的警报函数来测试函数是否被调用。但是我最终得到了这个错误AJAX:Javascript函数在使用AJAX加载内容后不起作用,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,目前,我遇到的问题是,在使用ajax加载第一个内容后,javascript功能无法正常工作。我尝试了其他解决方案,但大多数都是jquery格式。我的是javascript格式。我尝试创建一个简单的警报函数来测试函数是否被调用。但是我最终得到了这个错误未捕获引用错误:showArtistDetails未定义实际上函数已经在我的头标签顶部定义,但它仍然显示未定义。我能知道有什么方法可以解决这个错误吗 这是ajax代码: function showArtistDetails(str) { if
未捕获引用错误:showArtistDetails未定义
实际上函数已经在我的头标签顶部定义,但它仍然显示未定义。我能知道有什么方法可以解决这个错误吗
这是ajax代码:
function showArtistDetails(str) {
if (str == "") {
alert("hi");
document.getElementById("artist").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
alert("hi1");
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
alert("hi2");
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("artist").innerHTML = xmlhttp.responseText;
alert("hi3");
}
};
xmlhttp.open("GET","getArtist.php?title="+str,true);
alert("hi4");
xmlhttp.send();
alert("hi5");
}
}
这是php代码:
echo "<td onclick=\"showArtistDetails(this.value)\">" . $row['CDTitle'] . "</td>";
echo”“$行['CDTitle']。"";
在这个问题上我真的需要别人的帮助。大多数用户对jquery函数都有相同的问题,但我的问题不同。先谢谢你。非常感谢您的帮助。您的代码似乎没有bug。我找不到问题,请检查下面的代码
尽量放在页面底部
并确保使用type=“text/javascript”
芬兹
顶端扇子
ChamberClassic Rock Classic喜剧当代民间乡村文化死亡金属易听电子音乐JazzElectronicaFolkFree风格一般民间摇滚音乐JazzJungle/Drum'N Bass键盘交替拉丁拉丁说唱乐Louimedieval MiscellaneousMob HitsNew Agency Wavelolds另类流行乐Folkpsychedeliacraprap/R&BReggaeRnBRockAmbientRock/PopRockNRollRoots ReggaeSoft Rocksoul音乐曲目技术传统民间音乐传统PopTrip Hop先锋派世界古典歌曲BeatBalladBlueglassbluse
函数showMusic(str){
如果(str==“”){
document.getElementById(“相册”).innerHTML=“”;
返回;
}否则{
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}否则{
//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“albums”).innerHTML=xmlhttp.responseText;
}
};
open(“GET”、“getAlbums.php?q=“+str,true”);
xmlhttp.send();
}
}
PHP脚本
<?php
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
exit;
?>
您说:“函数已经在我的头标签顶部定义了”
我在head标签中只看到一个命名函数:showMusic(str)
showArtistDetails是在哪里定义的?由于这纯粹是一个javascript问题,我建议编辑您的帖子,以代码块的形式显示呈现的html/js,这将帮助其他人帮助您解决问题对不起,您理解错了,我们不需要看php,这是一个js问题。在您的web浏览器中,右键单击“选择”“查看源代码”并复制-将输出粘贴到您的问题中我已按您所说的复制粘贴源代码。但它没有显示最新的代码。它只显示了以前的功能代码。仍然是说未定义的功能确保您有最新版本的浏览器,java脚本不能为浏览器禁用..不,我使用的是最新版本的chrome。。如果在第一个ajax内容中尝试相同的代码,它可以工作,但在第二个ajax内容中它不工作,由您直接加载html,或者您使用ajax在其他页面中加载此html内容?它仍然是一样的。。。相同的未定义函数现在我看到您的php剪报。但是我不认为你可以通过Ajax将新的javascript代码注入html页面如果你将
onclick=\“showArtistDetails(this.value)\”
与onclick=\“alert(this)\”
交换会发生什么?我得到[object-HTMLTableCellElement]
确定。所以我们可以实际地注入javascript代码:-),然后我怀疑它可能与作用域有关。我仍然看不到对php脚本的ajax调用是从哪里完成的。它是否与定义showArtistDetails函数的html文件位于同一个html文件中?
<?php
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
exit;
?>