【问题标题】:Laravel 4 - Uncaught TypeError: Cannot read property 'post' of undefinedLaravel 4 - 未捕获的类型错误:无法读取未定义的属性“帖子”
【发布时间】:2014-08-31 18:28:58
【问题描述】:

我有这个脚本:

<script>
    function selectModSetProd(prodId,setId,objControl){

        function ifOK(r){
            objControl.style.background="'"+r.color+"'";
        }

         function ifError(e){
            alert('An error occurred when making the request: '+e.statusText);
        }

        function petition(prodId,setId,objControl){

            var data = {
               prod: prodId,
               set: setId,
            };

            var post = $.post("sql.php", data, ifOK, 'json');
            post.error(ifError);       

        }

       var set = objControl.value;
       if(confirm("Are you sure to start "+set+"?"))

            petition(prodId,setId,objControl);          
    }
</script>

在 laravel 4 中,但我有这个错误:“Uncaught TypeError: Cannot read property 'post' of undefined”

有人可以帮我解决这个错误吗?

【问题讨论】:

  • 我不知道 laravel 是什么,但你有没有在页面的某个地方包含 jQuery?似乎 $ 是未定义的,它是 jQuery 对象。也尝试使用 'jQuery.post' 而不是 '$.post'
  • 你确定 jQuery 已经加载了吗?您的错误很可能发生,因为您的 window.$ 未定义。
  • 是的,因为我可以看到确认与否的消息,但如果我确认我会收到此错误

标签: javascript jquery laravel laravel-4


【解决方案1】:

您很可能会收到 post 错误,因为您的 $.post 正在尝试转到未在您的 laravel 路由中定义的 sql.php。

将您的脚本从 sql.php 更新为 {{url().'/sql'}}

并添加一个 sql 路由到 laravel 路由。

这是一个简单的解决方案,或者您可以创建一个更安静的方法来处理您的 ajax 路由和控制器。有关这方面的更多信息,请访问 laravel.com

顺便说一句,你应该总是包装你的 jquery 以确保它像我之前发布的那样加载。

【讨论】:

    【解决方案2】:

    用这个包装你的脚本

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

    $.post 在加载 Angular 之前将无法工作。

    您的代码应为:

    $(document).ready(function() {
    function selectModSetProd(prodId,setId,objControl){
    
        function ifOK(r){
            objControl.style.background="'"+r.color+"'";
        }
    
         function ifError(e){
            alert('An error occurred when making the request: '+e.statusText);
        }
    
        function petition(prodId,setId,objControl){
    
            var data = {
               prod: prodId,
               set: setId,
            };
    
            var post = $.post("sql.php", data, ifOK, 'json');
            post.error(ifError);       
    
        }
    
       var set = objControl.value;
       if(confirm("Are you sure to start "+set+"?"))
    
            petition(prodId,setId,objControl);          
    }
    });
    

    【讨论】:

    • 如果我按照您对我说的话,没有任何效果,我看不到要确认的消息并且我收到其他错误:未捕获的 ReferenceError:$ 未定义 prodList:132(匿名函数)prodList: 132 Uncaught ReferenceError: selectModSetProd is not defined prodList:91 onchange
    • 你链接到 jquery 库了吗?
    • 是的,这个:
    • 如果你使用的是 laravel,你能测试一下你可以点击 sql.php。通常 laravel 不会提供 sql.php。你会需要它作为你的 laravel 路线的一部分。
    猜你喜欢
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2021-12-22
    • 2015-01-06
    • 2017-07-26
    • 1970-01-01
    • 2019-02-26
    相关资源
    最近更新 更多