biosway 发表于 2013-07-16 19:58

关于js调用php文件的变量传递问题

本帖最后由 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??

weishuo1999 发表于 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字符串了。

biosway 发表于 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。

bacy001 发表于 2013-08-01 11:49

你都没用ajax,如何取值?

biosway 发表于 2013-08-02 16:10

回复 4# bacy001
是我想的太简单了。

   
页: [1]
查看完整版本: 关于js调用php文件的变量传递问题