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_set
。 words/lavel
是从哪里来的?【参考方案3】:
尝试使用路由的名称来获取它的完整路径并将其设置为 JSON 请求:
url:'<?=URL::route('post_set')?>',
type:'POST',
dataType:'JSON'
...stuff
我在自己的项目中使用了这种风格,效果很好。
【讨论】:
以上是关于Laravel 4 ajax 发布的主要内容,如果未能解决你的问题,请参考以下文章