【问题标题】:Laravel 4 ajax POSTLaravel 4 ajax 发布
【发布时间】: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。我只是想捕获数据并稍后使用(将其放入我的数据库中)...

标签: jquery ajax post laravel


【解决方案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

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

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 2018-09-07
    • 2013-12-18
    • 1970-01-01
    • 2019-12-29
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多