我正在使用laravel 4.2并尝试使用ajax更新数据,但在ajax重定向网址中不能为我工作。因为我使用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...');
}
});
我不知道为什么它不起作用。请帮帮我。
答案 0 :(得分:2)
您需要在路线文件中添加路线:
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() }},
...
我希望这适合你!
答案 1 :(得分:1)
你在这做什么是一种非常可怕的做法。如果您有选择,就不应该在真实的应用程序中使用动态创建的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');
答案 2 :(得分:0)
在路线文件中添加路线:
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);