Laravel 4 ajax 发布

Posted

技术标签:

【中文标题】Laravel 4 ajax 发布【英文标题】:Laravel 4 ajax POST 【发布时间】:2014-06-08 18:43:30 【问题描述】:

我正在尝试在 laravel 4 中发布 ajax 帖子,但收到 500(内部服务器错误)。 我查看了互联网,我看不出我做错了什么。

我的 ajax 帖子(从 'http://flashwords.dev/app/public/words/level/1' 执行):

            $.ajax(
            url: 'http://flashwords.dev/app/public/words/post_set',
            type:'POST',
            dataType:'JSON',
            data:
                "words_correct": words_correct,
                "words_false" : words_false
            ,
            success:function()
                console.log("post success");
            
        );

我的路线:

Route::post('words/post_set', array('as'=>'post_set', 'uses'=>'UserController@post_set'));

我在 UserController 中的函数:

public function post_set()
    $correct = Input::get('words_correct');
    $false = Input::get('words_false');
    var_dump($correct);

可能我正在寻找一些愚蠢的东西..

提前致谢!

【问题讨论】:

你做了composer dump-autoload吗? 您是否在控制器中回显任何内容?我的意思是 JSON? 我刚刚做了 composer dump-autoload 并没有改变任何东西。我不认为我在控制器中回显 JSON。我只是想捕获数据并稍后使用(将其放入我的数据库中)... 【参考方案1】:

所以,我发现了问题所在。

我的代码很好,我的 url 很好,但是因为我正在尝试将数据发布到我的服务器 laravel 期望与发布请求一起发送的 csrf 令牌。

怎么样? --> http://words.weareloring.com/development/laravel/laravel-4-csrf-tokens-when-using-jquerys-ajax/

这是一个安全问题。

【讨论】:

链接失效【参考方案2】:

您应该将您的url 更改为:

url: 'http://flashwords.dev/app/public/words/post_set',

致关注:

url: 'words/post_set',

希望您的控制器存储在app/controllers 文件夹中。你也可以使用这个:

url:  route('post_set') 

如果这是在 .php 文件中并使用刀片,如果不是刀片,则删除 并改用 echo

【讨论】:

我的控制器存储在 app/controllers 中。如果我尝试您的解决方案,那么我会收到 404,因为它会尝试发布到 flashwords.dev/app/public/words/level/words/post_set 如何访问一个普通页面(没有ajax)? 你有一个.htaccess 文件并且你在你的url 中使用public ajax 帖子是在flashwords.dev/app/public/words/level/1 上完成的,我在浏览器中访问它。公共文件夹中有一个.htaccess,但我还没有修改它。如果我将 route:post 更改为 route:get 并在 UserController 的公共函数中添加一个回显,那么我可以通过浏览 flashwords.dev/app/public/words/post_set 来访问该页面。所以对我来说这条路线看起来不错.. 您已将路由声明为words/post_set,因此网址应为http://flashwords.dev/words/post_setwords/lavel 是从哪里来的?【参考方案3】:

尝试使用路由的名称来获取它的完整路径并将其设置为 JSON 请求:

            url:'<?=URL::route('post_set')?>',
            type:'POST',
            dataType:'JSON'
            ...stuff

我在自己的项目中使用了这种风格,效果很好。

【讨论】:

以上是关于Laravel 4 ajax 发布的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4.1.* AJAX 响应方式

Ajax 发布到 Laravel 4 中的路由

如何在 laravel 4 中使用 ajax

Laravel 4 CSRF 表单通过 Ajax 调用提交

在 Laravel 4.1 中形成 AJAX 后响应周期。*

PHP Laravel 4.2 ajax post返回null或空