调用onclick时Javascript没有运行

时间:2014-01-24 19:55:57

标签: javascript html ajax

其他onclicks一般看起来很好,这个特殊的onclick将无法运行,我想不出原因。

HTML(来自PHP回声)

<div class=\"f_love_it\">
<button id=\"f_love_it_{$type}_{$currant_id}\" class=\"btn btn-primary\" onclick=\"love_it({$_SESSION['user_id']},{$currant_id},{$type},{$post["user_id"]})\">I Love It!
</button></div>

Pure HTML

<button id="f_love_it_comment_16" class="btn btn-primary" onclick="love_it(4,16,comment,1)">I Love It!</button>

剧本

function love_it(lover_id,loved_id,post_type,poster_id)
{
    alert("You moose");
    var xmlhttp = new XMLHttpRequest();
    var get_request = "/lib/love.php?lover_id="+lover_id+"&loved_id="+loved_id+"&type="+post_type+"&poster_id="+poster_id;
    var element_id = 'f_love_it_'+post_type+'_'+loved_id;

    document.getElementById(element_id).innerHTML = 'Yup';

    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById(element_id).innerHTML = xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET", get_request, true);
    xmlhttp.send();
}

2 个答案:

答案 0 :(得分:1)

onclick=\"love_it({$_SESSION['user_id']},{$currant_id},{$type},{$post["user_id"]})\"

此代码段似乎包含一些PHP。检查HTML中的输出,因为它似乎不正确。你混合单引号和双引号,你拼写currant_id,我猜应该是current_id,除非你想要识别一个浆果。

通常,如果您的Javascript未运行,请检查浏览器中的Javascript并追溯您的PHP代码的任何错误。这比评估PHP代码和猜测错误要容易得多。您的浏览器可能有一个控制台(按F12),显示Javascript运行时错误。

<强> [编辑]

在看到您添加的输出后,我得出结论:post_type需要引用。

love_it(4,16,comment,1)

应该是

love_it(4,16,'comment',1)

所以代码应该是:

<button id=\"f_love_it_{$type}_{$currant_id}\" class=\"btn btn-primary\" onclick=\"love_it({$_SESSION['user_id']},{$currant_id},'{$type}',{$post["user_id"]})\">I Love It!

答案 1 :(得分:1)

注释是变量还是实际的字符串?

onclick="love_it(4,16,comment,1)"

如果它是一个变量,那么它是正确的,如果它是一个字符串,那么你缺少引号使它成为一个字符串。

onclick="love_it(4,16,'comment',1)"

现在,“评论”中有一个“或”,这将失败。