URL :: action在jquery ajax中不起作用

时间:2016-04-20 10:21:36

标签: php jquery ajax laravel laravel-4

我正在使用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...');
    }
});

我不知道为什么它不起作用。请帮帮我。

3 个答案:

答案 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);