2010-11-13 6 views
0

в моем user.data.crop_position значение «[100, 100, 200, 200]»;преобразование строки в массив

  var crop_position=user.data.crop_position.slice(1,user.data.crop_position.length-2); 
     $('#cropbox').Jcrop({ 
      setSelect: crop_position, 
      onChange: showPreview, 
      onSelect: showPreview, 
      aspectRatio: 1 
     }); 

делает это мой jcrop не выбрать на множестве постион что я могу сделать это происходит из-за строки я передаю в том, как я могу удалить это,

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

рассматривает

Рахул

+0

что значение user.data.crop_position при user.data.crop_position = «» в выше и почему вы нарезая его!? Разве вы не хранили массив, сколько вам нужно? Зачем ломтик? –

+0

user.data.crop_position значение «[100, 100, 200, 200]» – XMen

+0

Я делаю нарезку для удаления «двойных кавычек, которые я думаю из-за двойных кавычек, это проблема с cretaing – XMen

ответ

0

Jcrop Manual говорит, что setSelect принимает массив, а не строку.

[100, 100, 200, 200] // rather than 
'[100, 100, 200, 200]' 

Если вы не можете изменить формат ввода, по крайней мере, вы можете разобрать его с помощью $.parseJSON перед передачей его Jcrop:

var crop_position = $.parseJSON(user.data.crop_position); 

Edit: При необходимости (двойные кавычки фактически присутствуют в строковом значении), вы можете использовать $.parseJSON дважды, сначала для декодирования закодированного строкового значения, а затем для декодирования массива в кодированной строке:

var crop_position = $.parseJSON($.parseJSON(user.data.crop_position)); 

Или просто сдирать окружающие двойные кавычки перед $.parseJSON:

var crop_position = $.parseJSON(user.data.crop_position.slice(1, -1));  
+0

Это будет строка, если вы внимательно прочтете ответ. – galambalazs

+0

@galambalazs: Добавлена ​​некоторая информация в мой ответ об этом. – PleaseStand

0

setSelect - массив [х, у, х2, у2] Установить начальную область выбора

Так что вам нужен массив не строка для setSelect. Почему бы вам не сделать user.data.crop_position a массив сам? Если нет никакого способа изменить представление вы можете сделать преобразование с помощью простого алгоритма:

var pos = '"[ 100, 100, 200, 200 ]"'; // user.data.crop_position 
var crop_position = pos.replace(/["\[\] ]/g, '').split(','); 
for (var i = crop_position.length; i--;) { 
    crop_position[i] = +crop_position[i]; 
} 

Теперь у вас есть массив значений вместо строки.

Смежные вопросы