最大调用堆栈大小jQuery版本1.9.0

时间:2013-01-24 08:43:23

标签: php javascript jquery

我的问题涉及糟糕的书面代码,但它的工作却很乱,不管怎么说,它只是出于实验目的,我试图实现“喜欢系统”,用户点击按钮,与按钮关联的对象ID是通过ajax发送到脚本,并使用用户的数据更新mysql表,这将是对象ID。要做到这一点,我不得不使用PHP来回显对象,并附带一个带有javascript函数的类似按钮,如下所示:

for($i=0;$i<count($tempest);$i++)

{echo "<div class='posts'>
\"".$row2['screen_name']."\" 
<img src=\"".$row2['avatar']."\" width=50 height=50/><br>
 added a new page to the magic title
  \"".$row3['magic_name']."\"
   <br>
<img src=\"".$row1['p_name']."\">
<div id=\"".$i."\">
<a href='Javascript:penda(\"".$wholei."\",\"".$i."\")'> //this is the javascript function
<img name='mpe' src='images/like_outline.png'> //this is the like button
</a></div>
</div>";
}

我知道回复html是错误的,但就像我说的,这只是为了好玩,当使用jquery版本1.8.3来执行ajax请求时,它是:

function penda(item, itid) {
    itid = itid + "";

    $.ajax({
        type: "POST",
        url: "kumbatian.php",
        data: {
            penzi: item
        },
        success: function (ful) {
            if (ful == 'win') document.getElementById('win').innerHTML += "YOU WIN!!";
        }
    });
    document.getElementById(itid).innerHTML = "<a href='unlike()'><img src='images/like.png' /></a>";
}

我会得到以下错误,我正在使用chrome:Uncaught RangeError:超出了最大调用堆栈大小,我认为这意味着被回复的“喜欢”的数量是多少附加到函数penda ,数组$ tempest的大小是6,所以有六个像按钮。当我升级到jquery版本1.9.0时,没有这样的错误,一切正常,所以这是我的问题: 1.)为了在版本1.9.0中发生相同的错误,需要以上述格式回显多少个按钮? 2.)有什么更好的方法将所有这些按钮附加到函数penda()是否可以避免我遇到的错误?

编辑: 根据要求,这是html输出:

<div id="0"><a href="Javasctipt:penda("mna4","0")"> <img name="mpe" src="images/like_outline.png"> </a></div>

  <div id="1"><a href="Javasctipt:penda("mna4","1")"> <img name="mpe" src="images/like_outline.png"> </a></div>

  <div id="2"><a href="Javasctipt:penda("mna4","2")"> <img name="mpe" src="images/like_outline.png"> </a></div>

  <div id="4"><a href="Javasctipt:penda("mna4","4")"> <img name="mpe" src="images/like_outline.png"> </a></div>

  <div id="5"><a href="Javasctipt:penda("mna4","5")"> <img name="mpe" src="images/like_outline.png"> </a></div>

  <div id="6"><a href="Javasctipt:penda("mna4","6")"> <img name="mpe" src="images/like_outline.png"> </a></div>

就是这样。

1 个答案:

答案 0 :(得分:0)

使用PHP输出HTML没有任何问题。

然而,你的结果有什么不对。由于颜色编码清楚地显示了您,您的报价未正确转义。

试试这个:

... href="javascript:penda(&quot;mna4&quot;,0)" ...

通过使用HTML实体,可以避免引号之间的冲突。只要确保字符串值不是任何可能有引号的东西,否则你需要更聪明。