可能重复:
Calling a JavaScript function returned from a Ajax response
var url = "showpdf.php";
$.ajax({
type: "post",
url: url,
data: {academic:academic,uni:uni,course:course,lan:lan,sem:sem,subject:subject,type:type,clz:clz},
success: function(response)
{
alert(response);
document.getElementById("alldata").innerHTML = response;
}
});
内部响应我有简单的JavaScript函数
的html代码<label onclick="popup()"> clickme </label>
<script>
function popup()
{
alert("hello");
}
</script>
这里,这个popup()函数不起作用请帮助我。
答案 0 :(得分:3)
问题是您希望执行ajax响应中包含的Javascript。事实并非如此,浏览器不会执行ajax响应中包含的任何Javascript。有可能尝试解析Javascript并以某种方式执行它,例如eval()
,但那会很讨厌并且不是一个好主意。使用eval()
您还必须考虑它只接受有效的Javascript,因此您不能仅仅将响应传递给它,因为它包含一些HTML。
一种可能的解决方案可能是在页面或外部Javascript文件中定义popup()
函数,并在将HTML添加到DOM后分配点击处理程序。
例如:
function popup()
{
alert(this.id);
}
document.getElementById("alldata").innerHTML = response;
document.getElementById("myNewLabel").onclick = popup;
答案 1 :(得分:0)
将该字符串隐藏在您的页面中,并在成功时显示它。像:
<label onclick="popup()" id="mylable" style="display:none"> clickme </label>
<script>
function popup()
{
alert("hello");
}
</script>
var url = "showpdf.php";
$.ajax({
type: "post",
url: url,
data: {academic:academic,uni:uni,course:course,lan:lan,sem:sem,subject:subject,type:type,clz:clz},
success: function(response)
{
// alert(response);
$("#mylable").show();
}
});
尝试使用DOM的更好方法。如果以上代码对您有用,请告诉我。