PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
keilman
Отправлено: 16 Июня, 2014 - 16:06:13
Новичок
Покинул форум
Сообщений всего: 20
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
Здравствуйте!
Прошу помощи с jQuery.
Требуется заполнить новый массив.
Вот код:
CODE (
javascript ):
скопировать код в буфер обмена
// Создаем новый массив
var massiv = new Array;
// Ищем ячейки таблицы с атрибутом "title"
$( "td[title]" ) .each ( function ( i)
{
massiv[ i] = $( this ) .html ( ) ; // "Получаем содержимое ячейки"
massiv[ i] = $( this ) .attr ( "title" ) ; // "Получаем содержимое атрибута "title"
} ) ;
Я получаю значения в переменную "massiv" и посылаю аяксом на сервер, обрабатываю полученные данные функцией foreach.
Сейчас на сервер массив приходит такого вида:
А нужно чтобы был такого вида:
PHP:
скопировать код в буфер обмена
{
[ 0] =>
{
[ "id" ] =>
string( 1 ) "ключ1"
[ "name" ] =>
string( 14 ) "значение1"
}
[ 1] =>
{
[ "id" ] =>
string( 1 ) "ключ2"
[ "name" ] =>
string( 12 ) "значение2"
}
}
т. е. нужно получить ассоциативный массив с парой ключ1 => значение1, ключ2 => значение2
У меня пока в работает только эта строка
Я так понимаю эта не работает потому что происходит перезапись массива.
Как сделать чтобы в массив записывались и содержимое атрибута "title" и содержимое ячейки "TD"?
Пробовал так:
CODE (
javascript ):
скопировать код в буфер обмена
massiv[ i] [ ] = $( this ) .html ( ) ; // "Получаем содержимое ячейки"
massiv[ i] [ ] = $( this ) .attr ( "title" ) ; // "Получаем содержимое атрибута "title"
keilman
Отправлено: 16 Июня, 2014 - 17:14:20
Новичок
Покинул форум
Сообщений всего: 20
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
Спасибо за ответ!
Но к сожалению не помогло, вид массива остался таким же почему то...
я решил проблему немного по другому:
CODE (
javascript ):
скопировать код в буфер обмена
$( document) .ready ( function ( )
{
// Выводим список партий
$( "#button" ) .click ( function ( )
{
// Создаем массив для номеров set-ов
var num_set = [ ] ;
// Создаем массив для напараметров
var settings = [ ] ;
// Ищем ячейки таблицы с атрибутом "title"
$( "td[title]" ) .each ( function ( i)
{
// Записываем из ячеек номера set-ов
num_set[ i] = $( this ) .html ( ) ;
// Записывем параметры set-ов
settings[ i] = $( this ) .attr ( "title" ) ;
} ) ;
// Отправляем на сервер данные
$.ajax (
{
async: false ,
type : "POST" ,
url: "ajax/handler.php" ,
data:
{
num_set: num_set,
settings: settings
} ,
success: function ( html)
{
$( "#result" ) .html ( html) ;
}
} ) ;
} ) ;
} ) ;
И обработчик на сервере принимающий массив:
PHP:
скопировать код в буфер обмена
foreach ( $_POST [ 'settings' ] as $key1 => $settings )
{
foreach ( $_POST [ 'num_set' ] as $key2 => $num_set )
{
if ( $key1 == $key2 )
{
echo 'SET: ' . $num_set . '<br />' ;
echo 'Параметры: ' . $settings . '<br /><br />' ;
}
}
}
в скрипте jquery ничего критичного, а вот в обработчике php второй перебор не совсем удачно сделан... Он работает, но приходится много проходов делать, это из-за того что приходиться два массива по ключам сравнивать.
Может есть способ лучше это реализовать?(Отредактировано автором: 16 Июня, 2014 - 17:16:31)
tuareg
Отправлено: 16 Июня, 2014 - 19:51:47
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
А так ?:
CODE (
javascript ):
скопировать код в буфер обмена
// Создаем массив для номеров set-ов
var arr = [ ] , obj = { } , el;
// Ищем ячейки таблицы с атрибутом "title"
$( "td[title]" ) .each ( function ( i)
{
el = $( this ) ;
obj = {
num_set : el.html ( ) ,
settings : el.attr ( 'title' )
}
arr.push ( obj) ;
} ) ;
$.ajax (
{
async: false ,
type : "POST" ,
url: "ajax/handler.php" ,
data: arr,
success: function ( html)
{
$( "#result" ) .html ( html) ;
}
} ) ;
armancho7777777
Отправлено: 16 Июня, 2014 - 20:42:23
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011
Откуда: Москва
Помог: 221 раз(а)
CODE (
javascript ):
скопировать код в буфер обмена
var $data = $( "td[title]" ) .map ( function ( ) {
return {
id : this .getAttribute ( 'title' ) ,
name : this .innerHTML
} ;
} ) ;
$.post ( 'ajax/handler.php' , $data.get ( ) , function ( html) {
$( "#result" ) .html ( html) ;
} ) ;
keilman
Отправлено: 16 Июня, 2014 - 22:59:02
Новичок
Покинул форум
Сообщений всего: 20
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
tuareg пишет: А так ?:
CODE (
javascript ):
скопировать код в буфер обмена
// Создаем массив для номеров set-ов
var arr = [ ] , obj = { } , el;
// Ищем ячейки таблицы с атрибутом "title"
$( "td[title]" ) .each ( function ( i)
{
el = $( this ) ;
obj = {
num_set : el.html ( ) ,
settings : el.attr ( 'title' )
}
arr.push ( obj) ;
} ) ;
$.ajax (
{
async: false ,
type : "POST" ,
url: "ajax/handler.php" ,
data: arr,
success: function ( html)
{
$( "#result" ) .html ( html) ;
}
} ) ;
Спасибо! Но ваш вариант возвращает NULL.
Я решил другим способом, ниже смотрите.
(Добавление)
armancho7777777 пишет: CODE (
javascript ):
скопировать код в буфер обмена
var $data = $( "td[title]" ) .map ( function ( ) {
return {
id : this .getAttribute ( 'title' ) ,
name : this .innerHTML
} ;
} ) ;
$.post ( 'ajax/handler.php' , $data.get ( ) , function ( html) {
$( "#result" ) .html ( html) ;
} ) ;
И Вам спасибо за наводку. Ваш вариант вообще почему то не возвращал результат...
Но зато натолкнуло на мысли, спасибо.
Я решил по другому, идея взята от Вас!
(Добавление)
Я решил вот так:
код скрипта:
CODE (
javascript ):
скопировать код в буфер обмена
$( document) .ready ( function ( )
{
// Выводим список партий
$( "#button" ) .click ( function ( )
{
// Создаем массив для напараметров
var $massiv = [ ] ;
// Ищем ячейки таблицы с атрибутом "title"
$( "td[title]" ) .each ( function ( i)
{
$massiv[ i] =
{
// Записываем из ячеек номера set-ов
num_set: $( this ) .html ( ) ,
// Записывем параметры set-ов
settings: $( this ) .attr ( "title" )
} ;
} ) ;
// Отправляем на сервер данные
$.ajax (
{
async: false ,
type : "POST" ,
url: "ajax/handler.php" ,
data:
{
check: "yes" ,
massiv: $massiv
} ,
success: function ( html)
{
$( "#result" ) .html ( html) ;
}
} ) ;
} ) ;
} ) ;
и обработчик на сервере (php):
PHP:
скопировать код в буфер обмена
if ( isset ( $_POST [ 'check' ] ) && $_POST [ 'check' ] == "yes" ) {
foreach ( $_POST [ 'massiv' ] as $key => $massiv )
{
echo 'SET: ' . $massiv [ 'num_set' ] . '<br />' ;
echo 'Параметры: ' . $massiv [ 'settings' ] . '<br /><br />' ;
}
}
Теперь используется всего лишь один foreach
А то приходиться парсить файл содержащий до 15000 строк.
keilman
Отправлено: 17 Июня, 2014 - 10:20:00
Новичок
Покинул форум
Сообщений всего: 20
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
armancho7777777 пишет: keilman пишет: Ваш вариант вообще почему то не возвращал результат...
Исправить
на
О, спасибо.
Блин, почему у меня нельзя нажимать кнопку "Спасибо", уже трем человекам хотел нажать, а ругается что мало сообщений...
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB