0

javascript (Laravel 4) でコントローラー関数を呼び出すルートへの ajax 呼び出しを使用してクリックした後、データベースにエントリを保存しようとしています。

「ArtistsController」によって制御されるリソース「artists」があります。私が呼び出しを行っているビューは、「artists」ディレクトリの「show.blade.php」と呼ばれます (つまり、ページにはさまざまなアーティストが表示されます: artist/1、artists/2 など...)。

このデータを保存する「fanartists」というテーブルもあります。基本的に、ユーザーが特定のアーティストのページのボタンをクリックすると、その関係がこのテーブルに格納されます。

関連するコードは次のとおりです。

show.blade.php:

<script>
window.fbAsyncInit = function() {
    FB.init({
        appId      : '*****************',
            status     : true,
            cookie     : true,
            oauth      : true
            //xfbml      : true  
    });


      $( '.opener' ).click(function() {
        FB.ui({
            method: 'feed',

            link: 'http://crowdtest.dev:8888/artists/',
            name: 'Hello',
            caption: 'Hello',
            description: 'Hello!'

            });

            request = $.ajax({
        url: "/artists/fbclick",
        type: "post",
        data: serialised data
     });

      });
};
</script>

<a class="add-list-button-no-margin opener" style="color: white; font:14px / 14px 'DINMedium','Helvetica Neue',Helvetica,Arial,sans-serif;">Play my city</a>

アーティストコントローラー:

public function fbclick($id) {

        $artist = Artist::find($id);

        $fanartist = new Fanartist;
        $fanartist->artist_id = $artist->id; //the id of the current artist page (i.e. artists/1, id=1)
        $fanartist->fan_id = Auth::user()->id;
        $fanartist->save();

    }

ルート:

Route::get('/artists/fbclick', array('uses' => 'ArtistsController@fbclick'));

ajax リクエストを含めると、FB フィードがポップアップしません。私がそれを取り除くと、そうです。また、私が望むようにデータベースにデータを保存していません。

ここで何か問題がありますか?あなたの助けに感謝します。ありがとうございました。

4

1 に答える 1

1

あなたのスクリプトにはいくつかの小さな間違いがあります。

メソッドとして使用している ajax リクエストではpost、ルートを定義しているgetため、ルートを に変更するか、postajax メソッドを に変更しますget。ルートをpost使用するので、新しいルートはRoute::post('/artists/fbclick', array('uses' => 'ArtistsController@fbclick')'); ajax データ フィールドは json 形式である必要があるため、ajax リクエストは次のようになります。

$.ajax({
    url: "/artists/fbclick",
    type: "post",
    data: {field_name :'data'}
 });

最後にコントローラー機能に来て、少し変更があります

public function fbclick() {

    // $artist = Artist::find($id);
    $id=Input::get('field_name'); //field_name is the field name from your Json data  
    $fanartist = new Fanartist;
    $fanartist->artist_id = $id; //the id of the current artist page (i.e. artists/1, id=1)
    $fanartist->fan_id = Auth::user()->id;
    $fanartist->save();

}

すべてが今すぐ動作するはずです

于 2013-07-19T08:06:32.217 に答える