Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Код из переменной (https://javascript.ru/forum/jquery/27502-kod-iz-peremennojj.html)

Партизан 15.04.2012 06:16

Код из переменной
 
Добрый день.

У меня такой вопрос. У меня есть переменная, в ней содержится код.
Пример:
var $code "var $a = Math.floor(Math.random()*100+1);$('#inp').val($a);"


Как мне её потом использовать в программе?
Пример:
if ($a == '0')
{
$code
}
Дело в том что эту переменную я получаю по средствам Ajax из PHP кода.

devote 15.04.2012 06:20

eval( "var $a = Math.floor(Math.random()*100+1);$('#inp').val($a);" );

Партизан 16.04.2012 03:41

Спасибо, Вы меня выручили
 
Спасибо, Вы меня выручили. Но у меня возникла ещё одна проблема.

Я хотел передать РНР файлу объект, не где-то что-то не упустил. (Надеюсь я могу задать второй вопрос в этой теме)
Пример JavaScript :
var ob = {};			
	ob['a'] = "aaa"
	ob['b'] = "bbb"
			  $.ajax({
			  type: "POST",
			  data: 
			  {
				klass: "node", fun: "insert_data",
				jsonData: +$.toJSON(ob)
			  
			  },
			  url: "class.php",
			  dataType: "json",
			  	  success: function(data)
						  {
							
						  }
				});

Пример PHP:
$data = json_decode($_POST["jsonData"]);	
				$result = mysql_query ("INSERT INTO data (data) VALUES ('$data')");
				echo json_encode("true");


Но в базу записывается пустое значение.

devote 16.04.2012 04:00

а что вы хотели то? вы пытаетесь вместо строки засунуть в базу объект. json_decode возвращает объект и вы его зачем-то пытаетесь сунуть в базу.

Kolyaj 16.04.2012 14:02

Цитата:

Сообщение от Партизан
jsonData: +$.toJSON(ob)

А зачем вы тут + поставили?

Партизан 20.04.2012 01:24

Спасибо за советы
 
Я и правда сглупил с объектом.
Правильный код:
$data = (array) json_decode(stripslashes($_POST["jsonData"]));


Дальше уже с ним можно спокойно работать как с обычным массивом, хотя это работает только с одномерными. Для многомерных надо отдельно функцию писать :)

Кстати Kolyaj вы правы, + это опечатка.

razerxxx 20.04.2012 01:27

var $code "var $a = Math.floor(Math.random()*100+1);$('#inp').val($a); " - вообще так делать не стоит. Cервер мог бы просто отдать данные, а вычислить их уже на клиенте.

devote 20.04.2012 06:01

Цитата:

Сообщение от Партизан
$data = (array) json_decode(stripslashes($_POST["jsonData"]));

Это не правильный код, это кака.
Цитата:

Сообщение от Партизан
Дальше уже с ним можно спокойно работать как с обычным массивом, хотя это работает только с одномерными. Для многомерных надо отдельно функцию писать

вообще-то у функции json_decode, есть аж четыре входных параметра, второй из них можно установить в true и получить на выходе массив а не объект. Вы хоть иногда документацию то читаете?
$data = json_decode( stripslashes( $_POST["jsonData"] ), true );

Партизан 30.04.2012 23:23

Спасибо за ответы
 
razerxxx - этот код просто для примера. Конечно лучи передавать данные сразу скрипту, но не всегда это лучи.
Иногда легче, генерировать код одной функцией на PHP чем 10-ю функциями на явескрепте. :)


Уважаемы devote - возможно я ошибаюсь но, по моему параметр true, создавал многомерный массив, но не массив массивов, а массив - объектов. :)

devote 01.05.2012 00:18

Цитата:

Сообщение от Партизан
но, по моему параметр true, создавал многомерный массив, но не массив массивов, а массив - объектов.

а может проще не писать подобные тексты а пойти на официальный сайт и немного почитать? http://docs.php.net/manual/ru/function.json-decode.php и все сразу станет ясно, массив объектов или простой ассоциативный массив.


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