Преобразование строки в объект
Всем привет!!!
В общем в цикле генерирую строку вида '{"12": 150, "13": 150, "14": 100}' Как мне после перегнать ее объект для передачи через ajax? Для этой строки срабатывает JSON.parse, но если строка будет в виде "{'12': 150, '13': 150, '14': 100}" то объект не получается. Подскажите, почему? кавычка и двойная кавычка в js имеют же одинаковое значение. тогда в чем разница? срабатывает eval, но пишут лучше ее не использовать. Подскажите, как лучше и правильнее сделать? |
php-coder,
потому что в JSON формате ковычки должны быть двойные. |
php-coder, юзай eval. Почему бы и нет? Ты же сам генерируешь данные, вряд ли ты какой-то зловещий код сгенерируешь.
|
Цитата:
Только непонятно, зачем вообще сначала собирать строку, а потом эту строку переводить в объект (при том что реализующий ajax модуль все равно будет переводить объект в строку). Почему сразу не генерировать объект? |
Цитата:
Если знаете вариант, подскажите, пожалуйста, как сразу объект генерировать. В html форме вот такие инпуты <input name="dataId[14]" value="100" type="text" /> их может быть разное количество. изменяется только value и число в name(в данном примере 14). Нужно чтобы php аяксом получил массив
[dataId] => Array
(
[12] => 150
[13] => 150
[14] => 100
)
|
Цитата:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
var obj={'dataId': []};
$('[name^="dataId"]').each(function(){
obj.dataId.push(this.value);
});
alert(obj.dataId);
});
</script>
</head>
<body>
<form>
<input name="dataId[0]" value="10" type="text" />
<input name="dataId[1]" value="20" type="text" />
<input name="dataId[2]" value="30" type="text" />
<input name="dataId[3]" value="40" type="text" />
<input name="dataId[4]" value="50" type="text" />
</form>
</body>
</html>
|
Цитата:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
var obj={};
$('[name^=dataId]').each(function(){
var key=this.name.match(/\d+/);
obj[key]=this.value;
});
console.log(obj);
});
</script>
</head>
<body>
<form>
<input name="dataId[0]" value="10" type="text" />
<input name="dataId[1]" value="20" type="text" />
<input name="dataId[2]" value="30" type="text" />
<input name="dataId[3]" value="40" type="text" />
<input name="dataId[4]" value="50" type="text" />
</form>
</body>
</html>
|
ksa, спасибо, последний вариант - то что нужно.
|
Цитата:
|
| Часовой пояс GMT +3, время: 06:58. |