Jump to content

cyklop77

User
  • Posts

    1,770
  • Joined

  • Last visited

  • Days Won

    9

Posts posted by cyklop77

  1. c mysql удобно работать при помощи phpMyAdmin. скажите пожалуйста, существуют ли подобные утилиты для работы с localstorage браузера? я сейчас смотрю содержимое localstorage при помощи console.log, но это неудобный способ

     

     

  2. помогите пожалуйста понять почему в backbone push работает неочевидным способом

    пример1 (не рабочий):

    APP.Graph = Backbone.Model.extend({
      defaults: {
        title: undefined,
        dots: new Array()
      }
    )} 
    
    var graph = new APP.Graph();
    
    graph.attributes.dots.push([1, 1]);
    
    консоль выводит сообщение об ошибке:
    Uncaught TypeError: this.model.attributes.dots.push is not a function 

    пример 2 (не рабочий):

    APP.Graph = Backbone.Model.extend({
      defaults: {
        title: undefined,
        dots: new Array()
      }
    )} 
    
    var graph = new APP.Graph();
    
    var dots = this.model.get('dots');
    dots.push([1, 2]);
    this.model.set({'dots': dots});
    
    консоль выводит сообщение об ошибке:
    Uncaught TypeError: this.model.attributes.dots.push is not a function 

    пример 3 (рабочий):

    APP.Graph = Backbone.Model.extend({
      defaults: {
        title: undefined,
        dots: new Array()
      }
    )} 
    
    var graph = new APP.Graph();
    
    var arr = [];
    this.model.set({dots: arr});
    var dots = this.model.get('dots');
    dots.push([1, 2]);
    this.model.set({'dots': dots});
    
    ошибок нет. пуш сработал

     

  3. помогите пожалуйста добавить массив в массив:

      defaults = {
        title: 'qwerty',
        dots: new array()
      }
      
      defaults.dots.push([1 , 2]);
      
      console.log(defaults);

    консоль выводит такую ошибку:

    Цитата

    Uncaught ReferenceError: array is not defined

    https://jsfiddle.net/bwz2u6vc/

     

    в будущем планируется, что dots будет содержать большой набор массивиков: [1, 2], [1, 3], [1, 32], [21, 2], .......

  4. ребята, научите пожалуйста как хранить справочные данные в объекте

    есть одностраничное веб-приложение на backbone. смысл его в том, что пользователь может создавать графики и заполнять их точками. первую часть я сделал. вот конструктор модели для графика: 

    {APP.Graph = Backbone.Model.extend({
      defaults: {
        title: undefined,
        yMax: undefined,
        yMin: undefined,
        yPeriod: undefined,
        xMax: undefined,
        xMin: undefined,
        xPeriod: undefined,
        dots: []
      }
    });

    как видите, у каждого графика есть название и список характеристик для вертикальной и горизонтальной оси. так же есть свойство dots, которое является массивом. в нём я планирую хранить набор точек. формат такой:

    [
        [23, 23],
        [23, 23],
        [23, 23],
        [23, 23]
    ]

    вопрос. правильнй ли я выбрал способ для хранения данных о наборе точек? может быть уже существует типовое решение для такой задачи?

    дело ещё в том, что пока для хранения любых данных я использую localstorage(это механизм подобный cookie, который предоставляет современный браузер). но потом я планирую использовать mysql. не возникнет ли в этом случае проблем с переходом? всё таки в БД для подобных целей используется ещё одна таблица(справочник)

  5. ...я конечно понимаю, что простой такой. но всё таки, если кому не лень покопаться в куче кода, то подскажите пожалуйста почему в моём виджете localstorage не сохраняет данные после обновления странички браузера

     

    вот популярный в интернетах пример: http://html/js/EXAMPLES/bb_todos/  

    он же на гитхабе: https://github.com/tastejs/todomvc/tree/master/examples/backbone
    в нём всё работает как нужно. то есть если закрыть вкладку браузера и открыть снова, то данные не сбросятся. 

     

    а вот моя попытка сделать подобный виджет: prozaik.16mb.com/works/weekend_projects/graph_kalinin/ 

    гитхаб: https://github.com/zlodiak/graph_kalinin_3  

    я делал по аналогии, но в моём случае после обновления страницы(или закрытия вкладки) данные сбрасываются. и я не знаю в чём причина

  6. подскажите пожалуйста как поступать в следующей ситуации

    есть метод объекта:

      EnterKeyHandler: function (e) { 
        if (e.which === 13) {
          this.editEnd();
        }
      }

    здесь цифра 13 это код клавиши 'enter'. в приложении я её использую только один раз, только в этом месте. стоит ли выносить её в глобальную переменную?

  7. помогите пожалуйста починить скрипт 

    в блоке инициализации я определил несколько переменных объекта, которые указывают на определённые элементы. в одном из меодов я при участии этих переменных хотел бы изменить видимость элементов. но не получается 

    код: 

    window.APP = window.APP || {};
    
    APP.GraphLinkView = Backbone.View.extend({
      initialize: function() {
        this.editFieldElem = this.$el.find('.edit_Field');
        this.titleElem = this.$el.find('.graph_title');
        this.removeIconElem = this.$el.find('.glyphicon-remove');
        this.editIconElem = this.$el.find('.glyphicon-edit');
    
        console.log(this.editFieldElem);
        console.log(this.titleElem);
        console.log(this.removeIconElem);
        console.log(this.editIconElem);
      }, 
      
      template: _.template($('#graphsListItemTemplate').html()),  
    
      tagName: 'div',
    
      className: 'list-group-item',
    
      render: function() {  
        this.$el.html(this.template({
          title: 'qwerty',
          cid: 1
        }));
        $('#content').html(this.$el);
        return this;
      },
    
      events:{
        'blur .edit_field': 'editEnd',
        'click .glyphicon-edit' : 'editBegin'
      },
    
      editEnd: function() { console.log('e end');
        this.editFieldElem.find('.edit_field').hide();
        this.titleElem.find('.graph_title').show();
        this.editIconElem.find('.glyphicon-edit').show();
      },
    
      editBegin: function() { console.log('e beg');
        this.editFieldElem.find('.edit_field').show().focus();
        this.titleElem.find('.graph_title').hide();
        this.editIconElem.find('.glyphicon-edit').hide();
      }
    
    });
    
    
    
    new APP.GraphLinkView().render();

     

     

  8. скажите пожалуйста стоит ли выносить подобные простые функции в хелпер или это параноя? 

      changeColorFields: function(selector, borderColor) {
        $(selector).css({
          border: '1px solid ' + borderColor
        });  
      }

    у меня в программе эта функция используется раз 10

  9. помогите пожалуйста решить проблему

    есть такой объект: 

      defaults = {
        title: undefined,
        yMax: undefined,
        yMin: undefined,
        yPeriod: undefined,
        xMax: undefined,
        xMin: undefined,
        xPeriod: undefined,
        dots: {}
      }

    мне нужно сформировать массив, состоящий из свойств, которые имеют тип "не объект". то есть должен получиться такой массив: 

    [title, yMax, yMin, yPeriod, xMax, xMin, xPeriod]

     

  10. ...может быть кроме меня это никому смешным не покажется, но эта запись в редмайне от заказчика однозначно сделала мой день

    Цитата

    Уберите, пожалуйста, тег <br>
    я просил просто в коде перенос строки Типа ентер нажить (Это скрытый символ перевода каретки) 
    "\n" или "\r\n" (програмеры поймут)

    ps:

    и это ещё при том, что этот чел просит вставить символы перевода строки в разметку между слайдами карусели... я по его просьбе сначала BR вставил, но он просит именно \n

    • Like 1
  11. помогите пожалуйста решить проблему

    часто использую jquery-функцию $.ajax. поэтому решил вынести её в отдельный объект следующим образом: 

    var ajaxRequest = function(dataObj, requestFileName) {
      $.ajax({
        url: 'js/project/ajax/' + requestFileName,
        type: "post",
        data: dataObj,
        success: function(json) { 
          console.log('--' + JSON.parse(json));
          return JSON.parse(json);                                              
        }
      }); 
    };

    и затем могу хоть 100 раз обращаться к ней из любого места программы следующим лаконичный способом:

    var dotsObj = new ajaxRequest({graph_id: graph_id}, 'getDots.php');

    проблема в том, что JS асинхронен. то есть ajaxRequest только ещё получает данные с сервера, а сценарий выполняется дальше и соответственно уже обрабатывает dotsObj (а он ещё не получен)

     

    подскажите пожалуйста как можно заставить сценарий ждать ответа ajaxRequest. 

    например в той же функции $.ajax блок succes как раз ждёт когда данные придут с сервера. мне нужен такой же, но велосипед)

  12. помогите пожалуйста повернуть каждую цифру на 90 градусов. результат должен выглядеть так.  у меня пока получается только так 

    вообще я пытаюсь нарисовать систему координат. с вертикальной осью проблем нет

  13. 1 час назад, Switch74 сказал:

    length в многомерном массиве выдает количество элементов не во всем многомерном массиве, а в только количество его корневых элементов, вам нужно для каждого из этих элементов получить свой length и суммировать их, а если есть потомки и дальше, то это нужно делать и для них и т.д. и т.п.

    а мне и нужно только количество корневых элементов

    8 минут назад, Николя223 сказал:

    по тому что во втором случае не совсем обычный массив )  точнее, он воспринимается как ассоциативный

    по пробуйте посчитать таким способом количество элементов в { 123 : ""}

    console.log({ 123 : ""}.length);
    VM3248:2 undefined

    ну и что что ассоциативный. в любом случае это просто свойство объекта

  14. помогите пожалуйста разобраться

    1 пример

    js-скрипт делает ajax-запрос и получает ответ в виде массива. вывести в консоль количество элементов в массиве через .length получается

    $.ajax({
      url: 'js/project/ajax/getDots.php',
      type: "post",
      data:{graph_id: graph_id},
      success: function(json) { 
        json = JSON.parse(json);        
        console.dir(json);                                
        console.log(json.length);                                                                              
      }
    });
    $sql = 'SELECT * FROM `dots` WHERE `graphs_id` = ' . $_POST["graph_id"];
    $result = mysql_query($sql); // or die(mysql_error());
    $response = array();
    
    if($result){ 
      while($row = mysql_fetch_array($result)) {
        $unit = array();
        $unit["id"] = $row["id"];
        $unit["x_coord"] = $row["x_coord"];
        $unit["y_coord"] = $row["y_coord"];
        $unit["decsription"] = $row["decsription"];
        $response[] = $unit;
      };
    }
    else{
      $response = 'error';
    } 
    
    print(json_encode($response, JSON_UNESCAPED_UNICODE)); 

    2 пример

    js-скрипт делает ajax-запрос и получает ответ в виде многомерного массива. вывести в консоль количество элементов в массиве через .length не получается

    $.ajax({
      url: 'js/project/ajax/getDots.php',
      type: "post",
      data:{graph_id: graph_id},
      success: function(json) { 
        json = JSON.parse(json);        
        console.dir(json);                                
        console.log(json.length);                                                                              
      }
    });
    $sql = 'SELECT * FROM `dots` WHERE `graphs_id` = ' . $_POST["graph_id"];
    $result = mysql_query($sql); // or die(mysql_error());
    $response = array();
    
    if($result){ 
      while($row = mysql_fetch_array($result)) {
        $unit = array();
        $unit["id"] = $row["id"];
        $unit["x_coord"] = $row["x_coord"];
        $unit["y_coord"] = $row["y_coord"];
        $unit["decsription"] = $row["decsription"];
        $response[$row["id"]] = $unit;
      };
    }
    else{
      $response = 'error';
    } 
    
    print(json_encode($response, JSON_UNESCAPED_UNICODE)); 

    не пойму почему в одном случае  через length можно получить размер массива, а в другом - нет

  15. ребятушки, а ещё не подскажете почему кодировка слетает? у меня всё работало, но после того как я раскидал код по разным файлам, ответ ajax вместо кириллических символов выводит коды. здесь я в целях отладки сделал 2 вывода:

    <?php
      header("Content-type: text/html; charset=utf-8");
      error_reporting(0);
      require('connectDB.php');
    
      $connect = mysql_connect($host,$user,$password);
      mysql_query("SET NAMES utf8");
      mysql_select_db($database);
    
      $sql = 'SELECT `title` FROM `graphs`';
      $result = mysql_query($sql); // or die(mysql_error());
      $response = array();
    
      if($result){ 
        while($row = mysql_fetch_array($result)) {
          $response[] = $row["title"];
        };
      }
      else{
        $response = 'error';
      } 
    
      print_r($response);
    
      print(json_encode($response)); 
    ?>

    в результате при прямом обращении к скрипту браузер выводит:

    Array ( [0] => ыва [1] => ввв [2] => ываываывавы ) ["\u044b\u0432\u0430","\u0432\u0432\u0432","\u044b\u0432\u0430\u044b\u0432\u0430\u044b\u0432\u0430\u0432\u044b"]

    само-собой пробовал все файлы пересохранять в utf8 без бом

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy