@Pazzetif

Как вывести данные из ajax?

Доброго времени суток, уже долго колупаюсь, излазил все что только можно. Но не получается
Имеется плагин ckeditor.
В нем статически выводится информация в виде select
Работает примерно это вот так:
5b560b8f275f7619317975.png
Вот код этого участка:
id : 'hero',
                                            type : 'select',
                                            label : 'Выбери имя.',
                                            items: [ [ 'Mamba', '1'],[ 'Lamba', '2'] ],
                                            'default': '',
                                            onChange: function( api ) {
                                                // this = CKEDITOR.ui.dialog.select
                                                alert( 'Current value: ' + this.getValue() );
                                            }

Здесь мы выводим имя в список и при выборе получаем его значение.
Походу вместо вот этого: function( api ) {
// this = CKEDITOR.ui.dialog.select
alert( 'Current value: ' + this.getValue() );
}
мне нужен ajax запрос.
Собственно, в items мне нужны значения из ajax.
$.ajax({
                    url: '/heroes',
                    success: function(data) {
                        for (var key in data)
                        {
                            // data[key][1] data[key][0] - примерно такого вида.

                        }

файл: heroes.php:
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Heroes extends Model
{
    protected $table = 'heroes';
    protected $fillable = [ 'id','name','title','description','url','img_path','damage','health','mana','protection','attack_time','attacks_per_second','range_view','range_attack','type_attack','html_id','created_at','updated_at'];

}

HeroesController.php:
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Heroes;
use Illuminate\Support\Facades\DB;
class HeroesController extends Controller
{
    public function adminSelect(Request $request){
        $array =[];
        $adminheroes =  Heroes::all();
        $adminheroesHtmlid =  DB::table('heroes')->select('name')->get();
        $adminpanelHeroes =['adminheroesHtmlid' => $adminheroesHtmlid,'adminheroes' => $adminheroes];
        $gfg = json_encode($adminheroesHtmlid);
        $data = $adminheroesHtmlid;
        foreach($adminheroesHtmlid as $k => $heroes)
        {
            $array[$k][]=$heroes->name;
            $array[$k][]= '<a href="" data-html="true" data-trigger="hover" data-toggle="popover" data-content="rgdrg"><img src="/images/heroes_small/pudge_small.png" style="width: 26px; height: 15px; margin-top: 0; margin-right: 4px" alt=""></a>';
        }

        return $array;
    }
}

Нужно чтобы подставлялось значение $array[$k][]=$heroes->name; так и html код так же который в $array[$k][] в data[key][1] и data[key][0]
Надеюсь смог мысль донести, уже отчаялся...
  • Вопрос задан
  • 384 просмотра
Решения вопроса 1
@Pazzetif Автор вопроса
Может кому пригодится, сделал вот так:
jQuery.extend({
    getValues: function(url) {
        var result = null;
        $.ajax({
            url: url,
            type: 'get',
            dataType: 'json',
            async: false,
            success: function(data) {
                    result = data;
                console.log(result)
            }
        });
        return result;
    }
});
var results = $.getValues('/heroes');

CKEDITOR.plugins.add( 'hero',
    {
        icons: 'hero',
        requires : ['richcombo'], //, 'styles' ],
        init : function( editor )
        {
            editor.addCommand( 'abbrDialog', new CKEDITOR.dialogCommand( 'abbrDialog' ) );
            editor.ui.addButton( 'Hero',
                {
                    label: 'Выбрать героя',
                    command: 'abbrDialog',

                } );

            CKEDITOR.dialog.add( 'abbrDialog', function ( editor )
            {
            //     var fields;
            //     var tenant_fields = []; //new Array();
            //     $.ajax({
            //         url: '/heroes',
            //         dataType:'json',
            //         success: function(data){
            //             for (var key in data)
            //             {
            //                 $('.cke_dialog_ui_input_select select').html('<option value='+data[key][1]+'>'+data[key][0]+'</option>');
            //
            //         }
            //             console.log(data[1]);
            //     }
            // });

                // tenant_fields[4]=["Invoker", "4"];
                // tenant_fields[5]=["Axe", "5"];
                // tenant_fields[6]=["Juggernaut", "6"];
                // tenant_fields[7]=["Bloodseeker", "7"];
                // tenant_fields[8]=["Zeus", "8"];
                // tenant_fields[9]=["Faceless Void", "9"];
                // tenant_fields[10]=["Legion Commander", "10"];
                // tenant_fields[11]=["Crystal Maiden", "11"];


                return {
                    title : 'Выбор героя',
                    minWidth : 400,
                    minHeight : 200,


                    // onChange: function (api) {
                    //     // this = CKEDITOR.ui.dialog.select
                    //     alert('Current value: ' + this.getValue());
                    // }

                    contents :
                        [
                            {
                                id : 'tab1',
                                label : 'Tenants',
                                elements :
                                    [
                                        {
                                            type : 'select',
                                            id : 'style',
                                            label : 'Style',
                                            setup : '',
                                            items : results,
                                            commit : function( data )
                                            {
                                                data.style = this.getValue();
                                            }

                                        }
                                    ]
                            }

                        ],

                    onOk : function()
                    {
                        var dialog = this;
                        var abbr = editor.document.createElement( 'span' );
                        abbr.setHtml( dialog.getValueOf( 'tab1', 'style' ) );

                        editor.insertElement( abbr );
                    }

                };
            } );
        }
    });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы