Php массив в javascript объект

Передача массивов из PHP в javascript

Доброго времени суток. Столкнулся с такой проблемой, как передача массива из php в js.

$seq = array("foo", "bar", "baz", "blong"); $json = json_encode($seq);

Вот так все нормально. Далее эту переменную name я уже могу использовать в отдельном файле-яваскрипте. Проверяю обычным alert(name). Все передается и выводится. Но я не могу нормально получить уже нужный мне массив.

$beforeList = array(); $s = R::findAll( 'sites' ); //с базой связываюсь средствами redbeanphp foreach( $s as $addr ) { $beforeList[] = $addr->before; } $b = json_encode($beforeList);

Еще в PHP echo $beforeList[0] или echo$beforeList[1]. выводит все как полагается, т.е. массив нормальный. Но в скрипте своем я уже ничего не получаю, alert(before) ничего не показывает(он даже не вызывает всплывающий диалог). Что я делаю не так? Как мне получить свой массив?

Передача массива из PHP в JavaScript
На сайте существует база данных MySQL доступ к которой осуществляется по скриптам языка PHP.

Передача переменных из PHP в Javascript
Добрый день. Пытаюсь сделать, чтобы "сайт" работал не со своими данными, а обращался к базе за.

Передача переменной из javascript в php
Привет всем!) мне нужно, чтобы при каждом нажатии кнопки добавлялось дополнительное текстовое поле.

Передача значения переменной из JavaScript в PHP
У меня есть 2 php-файла, вот коды: 1) <script type="text/javascript"> var variable =.

var number = ''; number= JSON.parse(number); alert(number[0]);
var before = php echo $b;?>; before = JSON.parse(before);

Потом в файле-скрипте alert(before[0]); — и ничего не вызывается.

$json и так нормально передается и выводится в скрипте. Мне нужно мой $b передать и получить нормально.

Эксперт PHP

ЦитатаСообщение от Блеф Посмотреть сообщение

JSON это и так валидный javascript объект, нет смысла его переводить в строку и парсить.

el zurdo, нужно больше кода

el zurdo, выведите для начала переменную $b в скрипте. Все нормально? И как вы подключаете js скрипт?

Попробовал вывести $b в .php но появляются такие косяки, как экранирование слэша, портит все. Я пытаюсь передать чисто $beforeList. Даже не знаю как правильней.

Сама идея такая — я хочу искать запчасти по партномеру на нескольких сайтах(это уже есть). Я вношу в базу две части адресной строки, между которыми стоит мой партномер(второго может не быть). Уже есть список имеющихся сайтов и нужно добавлять, если нужно, новые. Я считываю из базы список адресов, хочу передать в отдельный файл script.js, что бы потом он открывал мне вкладки с уже заданным параметром поиска. Вот как выглядит index.php:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
 require "db.php"; if(!R::testConnection()) { exit('Нет подключения к базе'); } $data = $_POST; $beforeList = array(); $afterList = array(); //тестовый массив, который нормально передается $seq = array("foo", "bar", "baz", "blong"); $json = json_encode($seq); $s = R::findAll( 'sites' ); foreach( $s as $addr ) { $beforeList[] = $addr->before; $afterList[] = $addr->after; echo $addr->before.$addr->after."
"
;// } if(isset($data['do_add'])){ $errors = array(); if(trim($data['name']) == ''){ $errors[] = 'Введите сайт'; } if(trim($data['before']) == ''){ $errors[] = 'Пустое первое поле -между-'; } if(R::count('sites', "name = ?", array($data['name'])) > 0){ $errors[] = 'Такой сайт уже добавлен'; } if(empty($errors)){ //записываем в базу $sites = R::dispense('sites'); $sites->name = $data['name']; $sites->before = $data['before']; $sites->after = $data['after']; R::store($sites); echo '
Сайт добавлен в список!

'
; }else{ echo '
'.array_shift($errors).'

'
; } } ?>

Part#:

Имя сайта(пример: www.site.ru): echo @$data['name'];?>">

Поиск между: echo @$data['before'];?>"> и echo @$data['after'];?>"> (второго может не быть)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
var searchText; var searchBtn; var beforeList; var afterList; function init(){ searchBtn = document.getElementById("searchBtn"); searchText = document.getElementById("searchtext"); searchBtn.addEventListener("click",search); } function search(){ var stext = searchText.value; //var result = name.split(','); //alert(result);//вот это выводит //alert(name); // и так выводит, только через запятую alert(before);//а это нет /*for(var i = 0; i < before.length; i++)  //window.open(before[i] + stext + after[i], '_blank'); >*/ } window.addEventListener("load", init);

Источник

Php массив в javascript объект

В этом разделе помещены уроки по PHP скриптам, которые Вы сможете использовать на своих ресурсах.

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Совет: активация отображения всех ошибок в PHP

При поднятии PHP проекта на новом рабочем окружении могут возникнуть ошибки отображение которых изначально скрыто базовыми настройками. Это можно исправить, прописав несколько команд.

Источник

Преобразование массива php в Javascript

Как преобразовать массив PHP в такой формат:

Array (

[0] => 001-1234567 [1] => 1234567 [2] => 12345678 [3] => 12345678 [4] => 12345678 [5] => AP1W3242 [6] => AP7X1234 [7] => AS1234 [8] => MH9Z2324 [9] => MX1234 [10] => TN1A3242 [11] => ZZ1234

)

в массив Javascript в формате, как показано ниже:

var cities = [

«Aberdeen»,

«Ada»,

«Adamsville»,

«Addyston»,

«Adelphi»,

«Adena»,

«Adrian»,

«Akron»,

«Albany»

];

Ответ 1

Если у вас нет PHP 5.2, вы можете использовать что-то вроде этого:

function js_str($s)

return ‘»‘ . addcslashes($s, «\0..\37\»\\») . ‘»‘;

>

function js_array($array)

$temp = array_map(‘js_str’, $array);

return ‘[‘ . implode(‘,’, $temp) . ‘]’;

>

echo ‘var cities = ‘, js_array($php_cities_array), ‘;’;

Ответ 2

Я собираюсь предположить, что два массива, которые вы указали для PHP и JS, не связаны и они просто примеры того, как массивы выглядят на двух языках. Ясно, что вы не сможете преобразовать эти последовательности букв и цифр в названия городов.

PHP предоставляет функцию для преобразования PHP массивов в Javascript код: json_encode() (технически это формат JSON; JSON означает нотацию объектов JavaScript) .

Используйте это так:

$php_array = array(‘abc’,’def’,’ghi’);

$js_array = json_encode($php_array);

echo «var javascript_array = «. $js_array . «;\n»;

?>

Обратите внимание, что json_encode() доступна только в PHP 5.2 и выше, поэтому, если вы используете старую версию, вам нужно будет ознакомиться с руководством по вашей версии PHP.

Ответ 3

В ы можете преобразовать массивы php в javascript с помощью функции json_encode php:

0 => 001-1234567,

1 => 1234567,

2 => 12345678,

3 => 12345678,

4 => 12345678,

5 => ‘AP1W3242’,

6 => ‘AP7X1234’,

7 => ‘AS1234’,

8 => ‘MH9Z2324’,

9 => ‘MX1234’,

10 => ‘TN1A3242’,

11 => ‘ZZ1234’

)

?>

var jArray = ;

for(var i=0;i <12;i++)<

alert(jArray[i]);

>

Ответ 4

Для многомерного массива в PHP 4 вы можете использовать следующий код:

function js_str($s)

return ‘»‘.addcslashes($s, «\0..\37\»\\»).'»‘;

>

function js_array($array, $keys_array)

foreach ($array as $key => $value)

$new_keys_array = $keys_array;

$new_keys_array[] = $key;

if(is_array($value))

echo ‘javascript_array’;

foreach($new_keys_array as $key)

echo ‘[«‘.$key.'»]’;

>

echo ‘ = new Array();’;

js_array($value, $new_keys_array);

> else

echo ‘javascript_array’;

foreach($new_keys_array as $key)

echo ‘[«‘.$key.'»]’;

>

echo ‘ = ‘.js_str($value).»;»;

>

>

>

echo ‘var javascript_array = new Array();’;

js_array($php_array, array());

Ответ 5

Это моя функция. JavaScript должен быть под PHP, иначе используйте SESSION.

$phpArray=array(1,2,3,4,5,6);

?>

var jsArray = new Array();

$numArray=count($phpArray);

for($i=0;$i <$numArray;$i++)<

echo «jsArray[$i] = «. $phpArray[$i] . «;\n»;

>

?>

$(«#arrayCon»).text(jsArray[1]);

Последний ряд может быть . text(jsArray); и будет показан результат «1,2,3,4,5,6».

Ответ 6

Я использую поддельный массив php

// создайте свой массив следующим образом

$php_array = [«The»,»quick»,»brown»,»fox»,»jumps»,»over»,»the»,»lazy»,»dog»];

// сделайте это следующим образом (простая переменная, но с разделителем)

$php_fake_array = «The,quick,brown,fox,jumps,over,the,lazy,dog»;

?>

// используйте тот же разделитель для функции JS split()

js_array = ».split(‘,’);

если ваш массив заранее неизвестен:

$php_array = file(‘my_file.txt’);

$php_fake_array = «»;

// преобразуйте ваш массив с помощью конкатен а ции следующим образом

foreach ($php_array as $cell)

// поскольку этот массив неизвестен, используйте умный разделитель

$php_fake_array .= $cell.». «;

>

?>

// используйте тот же разделитель для функции JS split()

js_array = ».split(‘. ‘);

Ответ 7

У меня была такая же проблема, и вот как я это сделал :

/*PHP FILE*/

$data = file_get_contents(‘http://yourrssdomain.com/rss’);

$data = simplexml_load_string($data);

$articles = array();

foreach($data->channel->item as $item)

$articles[] = array(

‘title’ => (string)$item->title,

‘description’ => (string)$item ->description,

‘link’ => (string)$item ->link,

‘guid’ => (string)$item ->guid,

‘pubdate’ => (string)$item ->pubDate,

‘category’ => (string)$item ->category,

);

>

// ЕСЛИ ВЫ РАСПЕЧАТАЕТЕ МАССИВ СТАТЕЙ, ТО ПОЛУЧИТЕ ТОТ ЖЕ МАССИВ, ЧТО И СЕЙЧАС, ПОЭТОМУ Я СОЗДАЮ ВЫХОДНУЮ СТРОКУ И С ПОМОЩЬЮ ЦИКЛА FOR ДОБАВЛЯЮ НЕСКОЛЬКО СИМВОЛОВ ДЛЯ ПОСЛЕДУЮЩЕГО РАЗДЕЛЕНИЯ С ПОМОЩЬЮ JAVASCRIPT

$output=»»;

for($i = 0; $i < sizeof($articles); $i++)

//# элементы

//| атрибуты

if($i != 0) $output.=»#»;

// ЕСЛИ ЭТО НЕ ПЕРВЫЙ ЭЛЕМЕНТ, ДОБАВЬТЕ ‘#’ ДЛЯ РАЗДЕЛЕНИЯ КАЖДОГО ЭЛЕМЕНТА, А ЗАТЕМ ‘|’ ДЛЯ РАЗДЕЛЕНИЯ КАЖДОГО АТРИБУТА ЭЛЕМЕНТА

$output.=$articles[$i][‘title’].»|»;

$output.=$articles[$i][‘description’].»|»;

$output.=$articles[$i][‘link’].»|»;

$output.=$articles[$i][‘guid’].»|»;

$output.=$articles[$i][‘pubdate’].»|»;

$output.=$articles[$i][‘category’];

>

echo $output;

?>

/*AJAX */

$(document).ready(function(e)

var prodlist= [];

var attrlist= [];

$.ajax(

type: «get»,

url: «php/fromupnorthrss.php»,

data: ,

>).done(function(data)

prodlist= data.split(‘#’);

for(var i = 0; i < prodlist.length; i++)

attrlist= prodlist[i].split(‘|’);

alert(attrlist[0]); /// ТЕПЕРЬ МОЖНО ДОБРАТЬСЯ ДО КАЖДОГО ЭЛЕМЕНТА

>);

>);

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Читайте также:  Spring boot mongodb kotlin
Оцените статью