在多个js脚本中共享相同的变量 - 一个具有.ready功能,另一个没有

时间:2016-05-04 12:08:01

标签: javascript jquery ajax variables share

我有2个js脚本:

 <script type="text/javascript">

 function capture(){
var canvas = document.getElementById('canvas');
var video = document.getElementById('video');
canvas.getContext('2d').drawImage(video, 0, 0, video.videoWidth, video.videoHeight);
var img = canvas.toDataURL("image/png");
alert(img);
}
</script>
<script type="text/javascript"> 
 $(document).ready(function() { 

 $(".post").click(function() { alert(img);
 var level = document.getElementById('level');
 var language = document.getElementById('language');
 var textac = document.getElementById('textac');
 var decribac = document.getElementById('decribac');
 $.ajax({
 type: "POST",
url: "love.php",

data: {img: img, language: language, level: level, decribac:decribac, textac: textac },
  cache: false,
  success: function(data){

   }});
     window.location.replace("love.php");

   });
   });
   </script>

他们所做的是第一次点击“捕获”&#39;制作视频缩略图并将其放入画布并保存var img。还有一个点击另一个按钮&#39; post&#39;通过ajax发布一切,包括图像base64编码的字符串。我的问题是,当我尝试点击发布&#39;控制台登出

-  404 Uncaught ReferenceError: img is not defined

而且我不知道为什么好像我在第一个脚本中提醒它会得到正确的警报但第二个人不知道它。如果我把捕获功能放在

之下
   $(document).ready(function(){..});

然后它完成工作和控制台说 - 捕获功能未定义。多数民众赞成也很奇怪。如果我不放第二个按钮处理程序,它在点击时不会做任何事情。所以我需要将它们放在自己的脚本中 - 一个带有.ready功能,一个带有。现在我无法将img var导入第二个脚本,通过ajax将其发送到php脚本。帮助

1 个答案:

答案 0 :(得分:1)

您在函数内定义该变量:

function capture(){
    //...
    var img = canvas.toDataURL("image/png");
    //...
}

因此它仅存在于该函数的范围内。如果它需要是全局的,请在全球范围内定义:

var img;

function capture(){
    //...
    img = canvas.toDataURL("image/png");
    //...
}

这会将它附加到window对象,在整个窗口范围内的其他代码可以访问它。