jquery响应中的javascript函数无法正常工作

时间:2012-12-06 11:38:56

标签: php javascript jquery

  

可能重复:
  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()函数不起作用请帮助我。

2 个答案:

答案 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的更好方法。如果以上代码对您有用,请告诉我。