如下
<a href="#" onclick="<?php $sss=$arr[sendNumbers]; echo "javascript:getTelNumber('".$sss."')";?>"><span style="color:red;">下载号码</span></a>JS:function getTelNumber(telNumber){
alert(telNumber);

}
将$arr[sendNumbers]换成一个字符串,如$sss="123";点击下载号码可以 弹出123,换成$arr[sendNumbers]后就不行了,但是$arr[sendNumbers]的值是有的,$arr[sendNumbers]的值是“123456789”,可以打印出来,但是点下载号码的时候就是弹不出来,将$sss=“123456789”;是可以弹出123456789的,好奇怪哦,换成变量就不行,变量明明有值啊

解决方案 »

  1.   

    不会吧,检查一下生成的html代码有什么异常。
      

  2.   

    贴出 php输出的结果,即html代码,
      

  3.   

    <a href="#" onclick="javascript:getTelNumber('13530548291,')"><span style="color:red;">下载号码</span></a>
    这个是我审查元素的时候看见的,$arr[sendNumbers]的值是13530548291,,点下载号码就是弹不出来,但是将
    $arr[sendNumbers]常量也就是 $sss=“13530548291,”;就可以了
      

  4.   

    echo  $arr[sendNumbers];
    是什么。如果。如果没有这个东西或着为空,不就是问题原因?
      

  5.   

    把 js 部分写成
    function getTelNumber(telNumber){
      alert('['+ telNumber + ']');
    }就容易发现错误了
      

  6.   

    前面已经讲明白了,echo  $arr[sendNumbers];出来是有值的
      

  7.   


    <?php
    /* Created on [2012-4-17] Author[newton] */
    $arr = array("123","您好");
    ?>
    <script language="JavaScript" type="text/javascript">
    function getTip(param){
    alert(param);
    }
    </script>
    <!-- 注意getTip()的参数要加引号 -->
    <a href="javascript:void(0)" onclick="getTip('<?=$arr[1]?>')">下载</a>
      

  8.   

    把$arr[sendNumbers]改成$arr['sendNumbers']试试,我测试是没问题的
      

  9.   

    可以了,谢谢大家,知道是什么原因了,我写法是没有错的,关键是
    $arr[sendNumbers],如果$arr[sendNumbers]的值为一个很短的字符串,如“123456789,”,是没有问题的,如果$arr[sendNumbers]的值是一个很长的字符串问题就来了,这个时候alert就弹不出来了,我的字符串超过了1000个字符,如果是长字符串该怎么处理呢
      

  10.   

    还有一个问题,超链接标签中<a href="#" onclick="<?php $sss=$arr[sendNumbers]; echo "javascript:getTelNumber('".$sss."')";?>"><span style="color:red;">下载号码</span></a>
    a标签是在form1中,按照这样的提交方式我应该$_POST[Tel]才对啊,为什么用POST取不到值,用GET就能取到啊JS
    function getTelNumber(telNumber){
    alert(telNumber);
    document.form1.action="History.php?Tel="+telNumber;
      document.form1.submit();
    }
      

  11.   

    本帖最后由 xuzuning 于 2012-04-17 14:56:23 编辑
      

  12.   

    我的表单是以POST方式提交的啊<form id="form1" name="form1" method="post">
      

  13.   

    document.form1.action="History.php?Tel="+telNumber;
    这不是 get 方式吗?
      

  14.   

    知道是什么原因了,多了换行符,谢谢,但是为什么我用的POST提交方式,却只能GET到参数呢,POST不到参数
      

  15.   

    不好意思,很菜,那行,我换成
    <form id="form1" name="form1" method="post" action="History.php">JS也换掉
    function getTelNumber(telNumber){
    alert(telNumber);document.form1.submit();
    }
    这样写没有错了吧,然后再加上<input id="Tel" name="Tel" type="hidden" value="<?php echo $arr[sendNumber]?>";/>
    这样提交的是能POST得到数据了,但是$arr[sendNumber]过长的话还是会被切断,不是说POST的参数值长度没有限制吗
      

  16.   

    不是post数据过长切断,我猜的,你的$arr[sendNumber]里含有",提前结束了value=""如果这样,用htmlspecialchars
      

  17.   

    $arr[sendNumber]里面是有","有很多个",",但是为什么不是前面的,被切断了,而是在长度达到一定的长度的时候就被切断了,一般是800个字符,800以后的就被切断了
      

  18.   

    截断不是在浏览器中的吗?
    要贴浏览器中“查看页面源代码”看到的 html 代码
    你贴 php 代码是没有用的,我又没有你的数据。怎么能知道如何被截断?
      

  19.   

    晕,长字符用<textarea><?php
    if(!empty($_POST)){
      print_r($_POST['txt']);
    }
    ?>
    <form name="login" action="xxx.php" method="post">
      <textarea name="txt" rows="3" cols="50"></textarea>
      <input type="submit" name="btn" value="submit"  />
    </form>
      

  20.   


    <textarea name="txt" rows="3" cols="50"><?=$arr[sendNumber]?></textarea>
      

  21.   

    hidden控件显示value的时候字符串就已经被窃取了
      

  22.   

    找到原因了,是$arr[sendNumber]的问题,数据库中这个字段有200多个号码,但是从数据库中读出来的,只有79个,然后就被切断了,是PHP的原因吗
      

  23.   

    echo $arr[sendNumber];的时候,值就已经是被切断的了
      

  24.   

    修改了mssql.textlimit = 2147483647; Valid range 0 - 2147483647. Default = 4096.
    mssql.textsize = 2147483647
    都改到最大了,还是不行,怎么回事呢
      

  25.   

    是 varchar 类型的吧?
    加一个 text 类型字段,用 事情了指令抄写过去
    再读出来看看
      

  26.   

    找出是什么原因了
    查询语句
    $sql="select sum(count) as count,sendTime,group_concat(sendNumber) as sendNumber from `countmessage`  ".$where." group by sendTime" 这样写就会被窃取一部分,在分组的情况下$sql="select count,sendTime, sendNumber from `countmessage`  ".$where
    //这样写就完全没有问题sendNumber这个字段就是保存的$arr[sendNumber]的值
      

  27.   


    修改group_concat_max_len 的值或者临时解决方案,先执行SET group_concat_max_len = 5120;
      

  28.   

    mysql_query ("SET SESSION group_concat_max_len=102400",$this->link );
    设定一下就好了,谢谢大家,还想请教大家一个问题,POST的时候
    我代码里面有多组
    <td nowrap align="center" bgcolor="#F6FCFF">&nbsp; <a href="#" onclick="<?php echo "refreshPage()"?>"><span style="color:red;">下载号码</span></a>
                  <input id="Tel" name="Tel" type="hidden" value="<?php echo $arr[sendNumber]?>";/>
                </td>如果是有3组,那么随便点哪一个下载号码,显示的都是数组中最后一个$arr[sendNumber]的值,有没有什么好的办法区分这3组不同的$arr[sendNumber],因为我想点哪一个就是现实的哪一个的$arr[sendNumber]
      

  29.   

    <tr>
      <td><a href="#" onclick="function('号码1')" >group1</a></td>
      <td><a href="#" onclick="function('号码2')" >group2</a></td>
      <td><a href="#" onclick="function('号码2')" >group2</a></td>
    </tr>号码1,号码2,号码3……,group1,group2,group3……都通过循环打出来,这样满足你的需求吗?
      

  30.   

    1、多组时 id="Tel" 重名,这是不行的.要 id="$tid"
    2、你的 refreshPage 函数是如何写的
    最好是直接传 id 进去来的方便些
    refreshPage('$tid')
      

  31.   

    $arr[sendNumbers] OR $arr['sendNumbers'] ?