【问题标题】:Ajax + Laravel 5.2 + add an attribute to each of the buttons, buttons are generated by @foreach loopsAjax + Laravel 5.2 + 为每个按钮添加一个属性,按钮由@foreach 循环生成
【发布时间】:2017-10-21 17:20:10
【问题描述】:

我的看法:

@foreach ($social_networks as $social_network)
    {{ $social_network->displayName}}
@endforeach

我的控制器:

$social_networks = DB::table('social_networks')->get();

if(Auth::user()->admin)
{
    return view('adminDashboard')
            ->with('social_networks', $social_networks)
            ->with('i', ($request->input('page', 1) - 1) * 9);
}
return view('dashboard')
            ->with('social_networks', $social_networks)
            ->with('i', ($request->input('page', 1) - 1) * 9);

我的路线:

Route::resource('dashboard','DashboardController');

基本上,我需要的是尝试为生成的每个按钮添加一个 url 链接。而且每个按钮的链接都会不同。

我需要为每个按钮添加一个属性。我们称它为 data-url。我把网络的 URL 放在那里,我需要附加一个在单击按钮时触发的处理程序,以便跟踪 URL。

我想编写一些附加到社交按钮的 JavaScript。像这样的:

$(document).ready(function() { 
    $('.social-network').on('click', '.provider-btn', function( e ) { 
        $.ajax({ 
            'url': 'addconnection',
            'data': {
                network: this.data('network')
            },
            'dataType': 'json'
        }).done(function(json) { 
            if (json.status='ok') { 
                window.location = json.url; 
            } 
        });
    });
});

然后在服务器端,我需要一段代码来执行并确保响应执行如下操作:

function handleAddConnection($network) { 
    $social_network = DB::table('social_networks')->where('name', $network)->first();
    $url = $social_network->apiUrl;
    $response = array('status' => 'ok', 'url' => $url); 
}

【问题讨论】:

    标签: jquery ajax laravel laravel-5.2


    【解决方案1】:

    同样的循环,假设你有一个主索引:

    @foreach($social_networks as $social_network)
        <a href="{{ route('social_network.show', $social_network->id) }}" class="social-network-ajax"> {{ $social_network->displayName }} </a>
    @endforeach
    

    然后您可以定义一个点击处理程序,它将向服务器发送一个 ajax 请求:

    $('body').on('click', '.social-network-ajax', function(e){
        e.preventDefault(); //stop the default link from opening
    
        var $this = $(this); //referencing
    
    
        $.ajax({
            method: 'GET',
            url: $this.prop('href')
        }).done(function(resp){
            console.log(resp);
        }); 
    });
    

    当然要相应地定义你的路线:

    Route::get('social-network/{social_network}', 'SocialNetworkController@show')->name('social_network.show');
    

    或您希望将其发送到的任何控制器方法。

    【讨论】:

    • 我已经更新了我的问题,你能不能再看看它,看看你能不能帮助我!谢谢
    猜你喜欢
    • 2017-11-13
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多