2016-04-20 26 views
4

laravel 4.2を使用していて、ajaxを使用してデータを更新しようとしていますが、ajaxリダイレクトURLが私のために働いていません。 URLを使用しているため:URL :: actionがjquery ajaxで動作しない

$.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('[email protected]') }}"; 
      }, 2000); 
     } 
    }, 
    error: function(xhr, textStatus, thrownError) { 
     alert('Something went wrong. Please Try again later...'); 
    } 
}); 

私はなぜそれが動作しないのかわかりません。私を助けてください。

+0

注:このコントローラアクションへのルートが必要です – madalinivascu

+0

@madalinivascuこの状況でコントローラアクションをルートに追加する方法 –

+0

答えを参照以下のようになります – madalinivascu

答えて

0

あなたのルートファイルにルートを追加します:あなたは、あなたのルートファイルでルートを追加する必要が

setTimeout(function() { 
        window.location = "<?php echo action('[email protected]') ?>"; 
       }, 2000); 
+0

これは動作しません、 'http:// localhost/editorlara4/public/posts /%7B%7B%20URL :: action%28'PostsController @ index '%29%20%7D%7D' –

+0

doテンプレートにブレードが有効になっていますか? – madalinivascu

+0

ブレードが有効かどうかわかりません。どのように有効になっているかどうかをチェックする –

2

setTimeout(function() { 
       window.location = "<?php echo URL::action('[email protected]') ?>"; 
      }, 2000); 

か:へ

Route::get('post','[email protected]'); 

変更JS:

Route::post('post', '[email protected]'); 

CSRFを有効にした場合は、CSRFコードも送信する必要があります。あなたのポストの "データ"にこれを追加することでこれを行うことができます。

... 
url : "{{ url('store') }}", 
Data: data: { title: postTitle['post-title']['value'], body: postContent['post-body']['value'] }, _token: {{ csrf_token() }}, 
... 

私はこれがあなたのために働くことを望みました。

1

あなたはここで何をしていますかは本当にひどい習慣です。実際のアプリケーションで動的に作成されたJSコードを使用することは決してありません。

まず、JSとPHPコード(抗MVCの一種)を強く結びつけています。要求時間が増加します。アプリを維持するのは難しいです。

window.location.href = "/post/something"; 

を単にルートを作成し、URL::

Route::post('post/something', '[email protected]'); 
せずにそれを使用する:あなたは、あなたが手動でURLを作成する必要があります、など。ここ

Why generating JS with PHP is a bad practice

JS(縮小さ)準備を使用することができません

+0

コントローラアクションのルートを変更したい場合はどうなりますか?そのURLはどうなりますか?なぜあなたはそれを*ひどい練習と呼んでいるのですか? – madalinivascu

+0

彼は、URLを手作業で変更します。更新された投稿はなぜそれが悪い習慣であるかを伝えます。 –

関連する問題