PHP echo输出JavaScript - 脚本没有相同的范围

时间:2010-12-18 04:58:45

标签: php javascript variables scope echo

我目前正在设计HTML5 Canvas应用程序并使用Image Uploader,以便用户可以将本地图像上传到服务器,然后在画布上修改图像(因为对外部源的一些操作会给你一个安全例外)

我有一些JS包含这样的内容:

<script type="text/javscript">
    var editImage = new Image; // Global scope; not in a function
    function setupCanvas() {}
</script>

图像成功加载后,我回复如下:

echo '
<script type="text/javascript">
    alert("'.$upload_image.'"); 
    window.editImage=new Image(); 
    window.editImage.src=\''.$upload_image.'\'; 
    alert(window.editImage.src);
    setupCanvas();
</script>'

现在我从alert()语句得到的输出是$ upload_image。但是当我检查FireBug时,它会说我在单独的脚本中声明了GLOBALLY的editImage var仍然是ORIGINAL图像源,而不是$ upload_image。此外,它会说我调用的setupCanvas()方法将是UNDEFINED,尽管它在GLOBAL范围内。

我假设当我使用PHP执行此操作时必定会出现一些范围问题 - 有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:1)

对不起评论中的代码块是不可读的,这就是我使用JUST javascript的方式:

$(document).ready(function() {
   editImage=new Image(); 
   editImage.src='http://graffpic/uploads/fracture_1292689775.jpg'; 
   console.log(editImage.src); 
   setupCanvas();           
});

唯一的问题是当我用PHP输出它时会说$ is UNDEFINED - 所以这很可能是一个加载问题 - 任何人都可以给我更详细的信息和做什么?我可以导入jQuery库AGAIN,但这看起来很笨拙;或者我可以导入$(document).ready()所需的代码片段,这又是非常笨重的。有什么帮助吗?

答案 1 :(得分:0)

啊!我希望这也是你的问题。不仅仅是你帖子中的拼写错误,因为我已经根据你的例子用一些代码扯了我很久。这不仅仅是您的第一个代码块读取,

<script type="text/javscript">

<script type="text/javascript">
是吗? (注意第一行'javascript'中缺少'a'。)