Laravel 5.5 jQuery 3.3.1 ajax不是一个函数

时间:2018-02-07 09:42:37

标签: javascript php jquery ajax twilio

我一直在用twilio和laravel 5.5开发一个callcenter应用程序,我想在我的应用程序中获得webrtc功能,为此我必须使用ajax来发出请求。

然而我收到以下警告:

  

jQuery.Deferred异常:$ .ajax不是函数   @ http://localhost:8000/js/browser-calls.js:14:2   升@ http://localhost:8000/js/jquery.js:2:29373   一个/ HTTP://本地主机:8000 / JS /的jquery.js:2:2967

出现以下错误:

  

TypeError:$ .ajax不是函数

我搜索过高低的解决方案,我尝试了以下内容:

  1. 从cdn下载jquery到客户端并包含它

  2. 尝试最新的CDN <script src="http://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>

  3. 测试边缘,chrome,firefox
  4. 检查我是否不小心使用了超薄版本
  5. 将我的app.blade.php标题中的所有内容放在jquery下面而不是</body>
  6. 之前

    <script src="http://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script> <script type="text/javascript" src="//media.twiliocdn.com/sdk/js/client/v1.3/twilio.min.js"></script> <script type="text/javascript" src="{{ asset('js/browser-calls.js') }}"></script>

    什么都无法解决问题,这是我的ajax调用

        /* get twilio token with AJAX request */
    var clientName = $('#agent-name').data('name');
        $.ajax({
            type: 'POST',  
            url: '/twilio/generate-token', 
            data: {
                clientName: clientName,
            },
            success: function(data) {
                Twilio.Device.setup(data.token);
            }
        });
    

    我也尝试了$.post而不是$.ajax,但却导致了相同的错误。

    $.post('/twilio/generate-token', {
        clientName: clientName,
        clientToken: this.clientToken
        }, function(data) {
            Twilio.Device.setup(data.token);
    });
    

    导致$.ajax功能无法识别的原因到底是什么..

3 个答案:

答案 0 :(得分:1)

jquery liberary被包含在laravel本身的app.js脚本之前,之后我将jquery cdn移到了app.js的定位之后,问题得到了修复

答案 1 :(得分:1)

我遇到了同样的问题,但是通过添加以下行来解决了这个问题:

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>

答案 2 :(得分:0)

与添加第二个jQuery相比,我遇到了同样的问题,并且得到了更好的解决方案。 我发现app.js需要bootstrap.js。

在bootstrap.js中,已加载“ jquery / dist / jquery.slim.js”,只需将其更改为: “ jquery / dist / jquery.min.js”,并在重新编译和加载页面几次后,以更简洁的方式解决了该问题。

问题是已加载了jQuery的超薄版本,该版本实际上不包含任何ajax功能。