【问题标题】:How to call a Jquery function in Ajax callback如何在 Ajax 回调中调用 Jquery 函数
【发布时间】:2021-08-13 02:19:38
【问题描述】:

我有两个不同的文件,我正在调用一个 jquery 函数

它是从 file1.php 在我的 File2.js 中创建的

#file1.php 在我的第一个文件中,我在 ajax 中调用了一个 Jquery 函数

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<video id="video" autoplay></video>
<button id="start">Start</button>
<script type="text/javascript">
$(document).ready(function(){
    getusermedia();
    function getusermedia(media){
        $.ajax({
            url:"getusermedia.js",
            method:"POST",
            data:{media},
            success:function(data){
                $("#video").html(data);
            }
        })
    }
})
</script>
</body>
</html>

#file2.js 这是我的jQuery代码

const mediaStreamConstraints = {
  video: true,
  audio: true
};
const localVideo = document.querySelector('video');
let localStream;
function gotLocalMediaStream(mediaStream) {
  localStream = mediaStream;
  localVideo.srcObject = mediaStream;
}
function handleLocalMediaStreamError(error) {
  console.log('navigator.getUserMedia error: ', error);
}
navigator.mediaDevices.getUserMedia(mediaStreamConstraints)
  .then(gotLocalMediaStream).catch(handleLocalMediaStreamError);

当我得到答案时

我把这两个代码放在一个文件中

但在两个不同的文件中它没有响应

【问题讨论】:

  • 您没有导入 file2.js,也不会发布到 getusermedia.js 工作
  • .js 文件发送 POST 不会执行 JavaScript。
  • 您可以使用 $.getScript() 通过 AJAX 加载 .js 文件。但是脚本应该如何使用media 参数呢?

标签: jquery jquery-plugins getusermedia


【解决方案1】:

ajax 调用找不到 html 元素 const localVideo = document.querySelector('video');,因为它不可见。

你应该在 php-filetype 中调用 html-video-tag。这是一个选项,否则你只会得到错误。

【讨论】:

    【解决方案2】:

    如果要执行通过 AJAX 检索到的 JavaScript 脚本,请使用 $.getScript()

    function getusermedia() {
      $.getScript("getusermedia.js");
    }
    

    您没有将参数传递给getusermedia(),并且JS 脚本不使用任何参数,因此我已从您的函数中删除了media

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多