免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 13633 | 回复: 4
打印 上一主题 下一主题

关于js调用php文件的变量传递问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-16 19:58 |只看该作者 |倒序浏览
本帖最后由 biosway 于 2013-07-16 19:59 编辑

test.html文件代码:
<html>
  <body>
    <script>
       var c = 40;
    </script>
    <script type='text/javascript' src="test.php?c=c"></script>
  </body>
</html>

test.php文件代码:
<?php
   $id = $_GET['c'];
   echo "alert(".$id.");";
   echo "alert(\"cid = \"+".$id.");";
   echo "alert(\"cid = ".$id."\");";
   if(is_string($id)){
       echo "alert(\"string\");";
   }elseif(is_numeric($id)){
       echo "alert(\"nummber\");";
   }
?>

当浏览器中打开test.html文件的时候,php文件中的 $id 变量有的时候值是 40,有的时候值是 ”c“。
例如:   echo "alert(".$id.");";   弹出窗口的值是40;
            echo "alert(\"cid = \"+".$id.");";   弹出窗口的值也是 40;
            echo "alert(\"cid = ".$id."\");";   弹出窗口的值却是  ”c“。
还有就是使用 php 函数处理 $id 的时候,$id 的值也是 ”c”。

新手求教,这是什么情况?当php中处理 $id 的时候,怎样让它的值始终是 40??

论坛徽章:
4
双子座
日期:2014-08-28 10:08:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯之阿联酋
日期:2015-03-13 03:25:15
2 [报告]
发表于 2013-07-17 09:38 |只看该作者
本帖最后由 weishuo1999 于 2013-07-17 09:39 编辑

这里的原因是你在外面定义了c=40,在php文件里依然有效,那么你看看你的三条echo  对应的输出分别是

alert(c);
alert("cid = "+c);
alert("cid = c");

再对应var c = 40  第一个和第二个都能把c转成40, 第三个因为双引号的原因,直接alert字符串了。

论坛徽章:
0
3 [报告]
发表于 2013-07-17 16:57 |只看该作者
回复 2# weishuo1999

谢谢,明白怎么回事了。
当初还天真的以为使用 script 标签的 src 属性调用 php 文件,传递参数的时候,会把 “c=c” 中的第二个 c 给替换成 40……。其实传递过去的只是“c=c”而已,php 文件中获得的 $_GET['c'] 变量值就是字符 “c”,利用 echo 语句返回来的 alert 语句中的 “c” 是调用 html 文件中 js 代码中的变量 c。

论坛徽章:
0
4 [报告]
发表于 2013-08-01 11:49 |只看该作者
你都没用ajax,如何取值?

论坛徽章:
0
5 [报告]
发表于 2013-08-02 16:10 |只看该作者
回复 4# bacy001
是我想的太简单了。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP