本帖最后由 changjay 于 2010-07-19 03:16:09 编辑

解决方案 »

  1.   

    1、传递的js代码量大的话,用<textarea>可能更方便些2、没有很明白你的意思,变量传递不是直接赋值么,$js=$_POST['name'];3、关闭1.php自动擦除,是删除相应的js文件么?,如果这样,我倒建议你不要生成文件,直接在1.php页面输出js代码。如果生成文件,关闭1.php,立刻删除js文件,是比较困难的4、如果一定要不重复文件名,可以有个制造随机字符串函数,判断下具体目录是否存在字符串.js,没有就是不重复了
      

  2.   

    如果你的js足够动态(随时更改,不需要静态保存),则你完全可以这样使用:
    <script src=myjs.php?id=123&act=456></script>
      

  3.   

    $js='(function() {
    ... ...
    "http://localhost/$_POST[\'name\']+comic.php"
    ... ...
    }';
    file_put_contents("xxx.js", $js);
    $_POST['name']输出后还是$_POST['name'],并不是传递过来的变量值……
    如果我生成的JS就以 $_POST['name'].js 命名,怎样在关闭1.php后自动删除?
    或者生成的JS直接下载到客户电脑C盘下的临时文件夹里,从临时文件夹里加载……
    谢谢。
      

  4.   

    高手陆续起床啦~~
    我的JS代码很长,大小有30K,所以不想用<script></script>,还是想把它生成到外面再加载进来,要不别人看我的原文件,会不会觉得很BT?
      

  5.   

    <?
    $js ="<script>alert('".$_POST["name"]."');</script>";
    file_put_contents($_POST["name"].".js", $js);
    ?>这个方法,这个js是永远存在的。如果你要生成后删除,则访问者会无法正常访问。
    如果你要访问者访问的时候正确执行,又不想让这个js占用磁盘空间,则直接调用是最好的方案,只不过,不能用POST,而是GET。
      

  6.   

    传说,GET只能传递100个字节……
      

  7.   

    get方式提交数据的大小,http协议并没有限制;而是与浏览器及服务器、操作系统有关通常,不要超过2k+35个字节你30多k,get肯定不行。。
    js如果每一次变化,就是上面说的动态,POST方式传参,直接页面输出是比较好的方案了,省却了写文件,读文件,删文件
      

  8.   

    呵呵,果然是传说罢了……
    我想做一个书名查找,然后加一些JS效果。$js='(function() {
    ... ...
    "http://localhost/$_POST[\'name\']+comic.php"
    ... ...
    }';
    file_put_contents("xxx.js", $js);
    是不是加了function后,$_POST['name']就失效了?
      

  9.   

    应该不是失效,而是出错。
    "http://localhost/'.$_POST['name'].'+comic.php"
      

  10.   

    我试过,比如输入:gone with the wind
    1.php可以打开,只是缺失特效,并没有报错。
    我用DW打开生成后的JS文件看过,显示为:
    "http://localhost/$_POST['name']+comic.php"
    而不是"http://localhost/gone with the wind+comic.php"
      

  11.   

    <script src=mkjs.php></script>
    由 mkjs.php 产生的 js 脚本将不被缓存,当然也就看不见了而 
    <script src="http://localhost/slidetest/xxx.js"></script>
    虽然 xxx.js 在服务器端被删除了,但在用户的浏览器缓冲区还是可以找到的
      

  12.   

    试了"http://localhost/\'.$_POST[\'name\'].\'+comic.php"
    输出结果还是为"http://localhost/'.$_POST['name'].'+comic.php"抓狂ING……
      

  13.   

    你的代码漏了很多。'http://localhost/'.$_POST['name'].'+comic.php';
      

  14.   

    lz基本功不扎实,请把php代码贴出来,肯定是你的引号使用问题
      

  15.   

    $js='(function() {
    ... ...
    "http://localhost/\'.$_POST[\'name\'].\'+comic.php"
    ... ...
    }';
    file_put_contents("xxx.js", $js);改成:$js=“(function() {
    ... ...
    'http://localhost/'.$_POST['name'].'+comic.php';
    ... ...
    }'”;
    file_put_contents("xxx.js", $js);报错 Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in E:\www\gmap\4.php on line 4545行就是 'http://localhost/'.$_POST['name'].'+comic.php';
      

  16.   

    的确是引号问题。现在改成$js=“(function() {
    ... ...
    \"http://localhost/".$_POST["name"]."+comic.php\";
    ... ...
    }”;
    file_put_contents("xxx.js", $js);可以显示"http://localhost/gone with the wind+comic.php"
    但是 其他代码里有一个错误。
    比如:源代码是有一个"\n" 用\"替代外面的"的话,输出错误,只有""。里面的\n没有了……
      

  17.   

    解决了,反义斜杠要画两道杠 \\
    感谢楼上N位大侠。
    关于临时建立JS文件,关闭页面后删除的问题,另开主题啦。