Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   из строки в массив (https://javascript.ru/forum/misc/47895-iz-stroki-v-massiv.html)

niko42 11.06.2014 16:25

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

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

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

?

рони 11.06.2014 16:27

niko42,
http://learn.javascript.ru/json#json...-и-json-parse

niko42 11.06.2014 16:42

Цитата:

Сообщение от рони (Сообщение 316136)

Все бы так просто....((

Поясню:
Есть : <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

Sweet 11.06.2014 16:48

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

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

Тогда всё работает:
var send = "{\"url\":\"\", \"method\":\"POST\", \"param\":\"\"}";
alert( JSON.parse(send) );

niko42 11.06.2014 16:54

Цитата:

Сообщение от Sweet (Сообщение 316140)
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

nerv_ 11.06.2014 16:55

var text = "{url:'', method:'POST', param:''}";
var obj = new Function('return ' + text)();
alert(JSON.stringify(obj));

niko42 11.06.2014 16:57

Блин, работает только в таком состоянии:
<input type="text" name="url" send='{"url":"124", "method":"POST", "param":"44214"}'>

Sweet 11.06.2014 17:03

Цитата:

Сообщение от 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":""}'>

niko42 11.06.2014 17:03

Цитата:

Сообщение от nerv_ (Сообщение 316143)
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);

Sweet 11.06.2014 17:04

Цитата:

Сообщение от niko42
Блин, работает только в таком состоянии

Ты так говоришь, будто бы в таком состоянии есть что-то плохое:)


Часовой пояс GMT +3, время: 07:58.