Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.06.2014, 16:25
Аспирант
Отправить личное сообщение для niko42 Посмотреть профиль Найти все сообщения от niko42
 
Регистрация: 12.07.2012
Сообщений: 81

из строки в массив
Здравствуйте.

Есть строка send="{url:'', method:'POST', param:''}";

Как из этой строки сделать массив объектов
send={url:'', method:'POST', param:''}

?
Ответить с цитированием
  #2 (permalink)  
Старый 11.06.2014, 16:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

niko42,
http://learn.javascript.ru/json#json...-и-json-parse
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2014, 16:42
Аспирант
Отправить личное сообщение для niko42 Посмотреть профиль Найти все сообщения от niko42
 
Регистрация: 12.07.2012
Сообщений: 81

Сообщение от рони Посмотреть сообщение
niko42,
http://learn.javascript.ru/json#json...-и-json-parse
Все бы так просто....((

Поясню:
Есть : <input type="text" name="url" send="{url:'124', method:'POST', param:'44214'}">
var send = $(this.form).find('input[send]');

    console.log(JSON.parse(send.attr('send')));

Uncaught SyntaxError: Unexpected token u
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2014, 16:48
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

niko42, это:
"{url:'', method:'POST', param:''}"

не json. json выглядит так:
"{\"url\":\"\", \"method\":\"POST\", \"param\":\"\"}"

Тогда всё работает:
var send = "{\"url\":\"\", \"method\":\"POST\", \"param\":\"\"}";
alert( JSON.parse(send) );
Ответить с цитированием
  #5 (permalink)  
Старый 11.06.2014, 16:54
Аспирант
Отправить личное сообщение для niko42 Посмотреть профиль Найти все сообщения от niko42
 
Регистрация: 12.07.2012
Сообщений: 81

Сообщение от Sweet Посмотреть сообщение
niko42, это:
"{url:'', method:'POST', param:''}"

не json. json выглядит так:
"{\"url\":\"\", \"method\":\"POST\", \"param\":\"\"}"

Тогда всё работает:
var send = "{\"url\":\"\", \"method\":\"POST\", \"param\":\"\"}";
alert( JSON.parse(send) );
Спасибо. К сожалению, не так всё просто=)

Смотрите:
<input type="text" name="url" send="{'url':'124', 'method':'POST', 'param':'44214'}">
var send = $(this.form).find('input[send]');
    var param = JSON.parse('"' + send.attr('send') + '"');
    console.log(param.url);

Ответ: undefined
Ответить с цитированием
  #6 (permalink)  
Старый 11.06.2014, 16:55
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

var text = "{url:'', method:'POST', param:''}";
var obj = new Function('return ' + text)();
alert(JSON.stringify(obj));
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #7 (permalink)  
Старый 11.06.2014, 16:57
Аспирант
Отправить личное сообщение для niko42 Посмотреть профиль Найти все сообщения от niko42
 
Регистрация: 12.07.2012
Сообщений: 81

Блин, работает только в таком состоянии:
<input type="text" name="url" send='{"url":"124", "method":"POST", "param":"44214"}'>
Ответить с цитированием
  #8 (permalink)  
Старый 11.06.2014, 17:03
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от niko42
Ответ: undefined
Правильно. Ведь у строки нет свойства .url. А у тебя param - это строка:
var param = JSON.parse('"' + "{'url':'124', 'method':'POST', 'param':'44214'}" + '"');
alert(typeof param); // внезапно? =)

Суть-то совсем в другом:
<input type="text" name="url" send='{"url":"", "method":"POST", "param":""}'>
Ответить с цитированием
  #9 (permalink)  
Старый 11.06.2014, 17:03
Аспирант
Отправить личное сообщение для niko42 Посмотреть профиль Найти все сообщения от niko42
 
Регистрация: 12.07.2012
Сообщений: 81

Сообщение от nerv_ Посмотреть сообщение
var text = "{url:'', method:'POST', param:''}";
var obj = new Function('return ' + text)();
alert(JSON.stringify(obj));
Отличный вариант, спасибо !

var send = $(this.form).find('input[send]');
var obj = new Function('return ' + send.attr('send'))();
console.log(obj.url);
Ответить с цитированием
  #10 (permalink)  
Старый 11.06.2014, 17:04
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от niko42
Блин, работает только в таком состоянии
Ты так говоришь, будто бы в таком состоянии есть что-то плохое
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в шаблоне диррективы узнать массив это или строка? delias Angular.js 1 18.03.2014 07:33
Массив объектов doox911 Библиотеки/Тулкиты/Фреймворки 6 16.01.2014 22:36
Разбиение строки на десятимерный массив cbone Общие вопросы Javascript 7 23.11.2011 08:15
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30