URL::action 在 jquery ajax 中不起作用
Posted
技术标签:
【中文标题】URL::action 在 jquery ajax 中不起作用【英文标题】:URL::action not working in jquery ajax 【发布时间】:2016-08-12 22:56:50 【问题描述】:我正在使用 laravel 4.2 并尝试使用 ajax 更新数据,但在 ajax 重定向 url 中对我不起作用。因为我使用 URL:action like,
$.ajax(
type: 'POST',
dataType: 'json',
url : "store",
data: title: postTitle['post-title']['value'], body: postContent['post-body']['value'] ,
success: function(data)
if(data.success === false)
$('.error').append(data.message);
$('.error').show();
else
$('.success').append(data.message);
$('.success').show();
setTimeout(function()
window.location.href = " URL::action('PostsController@index') ";
, 2000);
,
error: function(xhr, textStatus, thrownError)
alert('Something went wrong. Please Try again later...');
);
我不知道为什么它不起作用。请帮帮我。
【问题讨论】:
注意:你需要一个到那个控制器动作的路由 @madalinivascu 在这种情况下如何在路由中添加控制器操作 【参考方案1】:你需要在你的路由文件中添加一个路由:
Route::post('post', 'PostsController@index');
但是如果你启用了 CSRF,那么你还需要发布 CSRF 代码。你可以通过在你的帖子“数据”中添加这个来做到这一点。
...
url : " url('store') ",
Data: data: title: postTitle['post-title']['value'], body: postContent['post-body']['value'] , _token: csrf_token() ,
...
我希望这对你有用!
【讨论】:
【参考方案2】:你在这里做什么是一种非常糟糕的做法。如果你有选择的话,你永远不应该在真正的应用程序中使用动态创建的 JS 代码。
首先,您将 JS 和 php 代码紧密耦合(一种反 MVC)。请求时间增加。维护应用程序更难。您无法使用准备好的(缩小的)JS 等。
Why generating JS with PHP is a bad practice
在这里,您应该手动创建 URL:
window.location.href = "/post/something";
只需创建路由并在没有URL::
的情况下使用它
Route::post('post/something', 'PostsController@postSomething');
【讨论】:
如果他想更改该控制器操作的路由会发生什么,那么 url 会发生什么?,你为什么称其为可怕的做法 他会去手动更改网址。更新后的帖子说明了为什么这是一种不好的做法。【参考方案3】:在你的路由文件中添加一个路由:
Route::get('post','PostsController@index');
把js改成:
setTimeout(function()
window.location = "<?php echo URL::action('PostsController@index') ?>";
, 2000);
或:
setTimeout(function()
window.location = "<?php echo action('PostsController@index') ?>";
, 2000);
【讨论】:
它不工作,它返回像http://localhost/editorlara4/public/posts/%7B%7B%20URL::action%28'PostsController@index'%29%20%7D%7D
这样的url
您是否在模板上启用了刀片?
我不知道刀片是否启用。如何检查其是否启用
你的视图文件应该有刀片在他的名字
嗯,是的,我的视图文件扩展名为 .blade.php以上是关于URL::action 在 jquery ajax 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何将正确的 Url.Action 传递给 JQuery 方法而没有额外的 & 号麻烦?
如何在 jQuery $.ajax() 发布请求中向 MVC 控制器方法发送模型