0

我试图在单击后使用 ajax 调用在 javascript 中调用控制器函数的路由(在 Laravel 4 中)将条目存储在数据库中。

我有一个由“ArtistsController”控制的资源“艺术家”。我正在调用的视图在“艺术家”目录中称为“show.blade.php”(即该页面显示不同的艺术家:艺术家/1、艺术家/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因此要么将您的路线更改为,要么post将 ajax 方法更改为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 回答