Дуэли
         Помощь
добавить запись мои записи мои метки new мои дуэли избранное обо мне настройки оформление  
читать всех друзей редактировать друзей редактировать группы дни рождения настройка подписки  
создать сообщество мои сообщества каталог сообществ  
комментируемые активные популярные читаемые звездные блогиЗвездные блоги на Mail.Ru популярные записи последние записи опросы  
мои дуэли победы поражения прямой эфир двустволка new в десятку! new  
  Блог
  Инфо
  Друзья
  Мой Мир
  Фото
  Видео
  Подписаться на обновления

Pais porrada de Bethrezen

Метки  

Записи с меткой: jQuery

25-06-2009 13:12 (cсылка)  
Bethrezen
Bethrezen

jQuery Serialize - PHP like serialize function for JavaScript

ENG: I've addapted a JavaScript serialize function by Kevin van Zonneveld to jQuery. Function works like the same named function in PHP. Be free to use it in your projects. It is especially needed when you want to post Object in AJAX (in jQuery "$.ajax()").
RUS: Я адаптировал JavaScript serialize функцию, написанную Kevin van Zonneveld, для использования с jQuery. Serialize работает также как и одноименная функция в PHP. Она хорошо выручит Вас, если Вы захотите передать в AJAX запросе Объект (JavaScript object).

Example of using: $.serialize({data: 'value'});

Source code:

jQuery.extend({
serialize: function( mixed_value ) {
// http://kevin.vanzonneveld.net
// + original by: Arpad Ray (mailto:arpad@php.net)
// + improved by: Dino
// + bugfixed by: Andrej Pavlovic
// + bugfixed by: Garagoth
// + input by: DtTvB (http://dt.in.th/2008-09-16.string-length-in-bytes.html)
// + bugfixed by: Russell Walker
// % note: We feel the main purpose of this function should be to ease the transport of data between php & js
// % note: Aiming for PHP-compatibility, we have to translate objects to arrays
// * example 1: serialize(['Kevin', 'van', 'Zonneveld']);
// * returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'
// * example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'});
// * returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}'

var _getType = function( inp ) {
var type = typeof inp, match;
var key;
if (type == 'object' && !inp) {
return 'null';
}
if (type == "object") {
if (!inp.constructor) {
return 'object';
}
var cons = inp.constructor.toString();
match = cons.match(/(\w+)\(/);
if (match) {
cons = match[1].toLowerCase();
}
var types = ["boolean", "number", "string", "array"];
for (key in types) {
if (cons == types[key]) {
type = types[key];
break;
}
}
}
return type;
};
var type = _getType(mixed_value);
var val, ktype = '';

switch (type) {
case "function":
val = "";
break;
case "undefined":
val = "N";
break;
case "boolean":
val = "b:" + (mixed_value ? "1" : "0");
break;
case "number":
val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
break;
case "string":
val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\"";
break;
case "array":
case "object":
val = "a";
/*
if (type == "object") {
var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);
if (objname == undefined) {
return;
}
objname[1] = serialize(objname[1]);
val = "O" + objname[1].substring(1, objname[1].length - 1);
}
*/
var count = 0;
var vals = "";
var okey;
var key;
for (key in mixed_value) {
ktype = _getType(mixed_value[key]);
if (ktype == "function") {
continue;
}

okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);
vals += $.serialize(okey) +
$.serialize(mixed_value[key]);
count++;
}
val += ":" + count + ":{" + vals + "}";
break;
}
if (type != "object" && type != "array") {
val += ";";
}
return val;
}
});


NJoy


Метки: jQuery, javascript, PHP, serialize

25-01-2009 15:47 (cсылка)  
Bethrezen
Bethrezen

DailySnap: DropDown jQuery Navigation Menu

dailysnap, dropdown, jquery, menu, navigation, yii framework, меню навигации на CSS

Выпадающее меню навигации v0.1.
Простенькое выпадающее меню на jQuery. Использует модуль категорий для динамической генерации HTML разметки на UL-ах. Реализовано как CWidget.
Использовалось: jQuery, CSS, The Gimp для фона и картинок, Yii Framework


Метки: dailysnap, dropdown, jQuery, menu, navigation, yii framework, work

31-10-2008 20:54 (cсылка)  
Bethrezen
Bethrezen

jQuery UI Dialog bug

Вот сегодня заметил в jQuery UI версии 1.6-rc2 в компоненте Dialog серьезный баг. Если я делаю модальный диалог, то даже если он закрыт, все input элементы на странице становятся некликабельными.

О баге доложил в BugTracker.

В исходниках копаться не хотелось, поэтому единственное решение - не делать модальных диалогов.


Метки: jQuery, UI, Dialog, bug

29-10-2008 14:10 (cсылка)  
Bethrezen
Bethrezen

Продолжение приключений с jQuery

Вот и наткнулся я на ещё одно интересное противоречие. Есть великолепный плагин для jQuery под названием ajaxForm.Плагин мне собственно нужен был для AJAX загрузки файла на сервер и получения ответа в JSON. Но тут проблема. Данный плагин выдает ошибку, даже если пришел JSON и dataType тот же стоит. А всё потому что он смотрит на заголовок Content-Type. Загуглив, я нашел, что по стандартам надо делать так:

header('Content-type: application/json; charset=utf-8');

Казалось бы всё просто. Однако нет. Firefox предложил мне скачать файл application/json :-D

Помнится когда то работал тип Content-Type: text/javascript. Но это было давно и не правда. В итоге я вообще убрал явное определение dataType и не стал никаких заголовков посылать. Вроде работает.


Метки: jQuery, dev

28-10-2008 15:25 (cсылка)  
Bethrezen
Bethrezen

Мысли о jQuery

Сегодня вот весь день сижу работаю несмотря на температуру. Парюсь с jQuery. Заметил кучу недоработок и особенностей.
То, что меня больше всего удивило, это когда мы создаем UI/Dialog, то элемент, к которому мы применили функцию dialog() перемещается по DOM-у в конец BODY. Применив к этому же элементу эту же функцию ещё раз, мы получаем второй экземпляр диалога, а не переписывсаем уже существующий. Обходом этого стало условие: if $("#dialog").hasClass("ui-dialog-content") == false)

Также я ещё использую плагин jQuery TreeView, который по названию понятно что делает. Только вот в асинхронной загрузке веток отсутствует функция перезагрузки ветки. Обходилось оно так:

                    if ($("#cat_" + root).hasClass('collapsable'))
                    {
                        $("#cat_" + root + " > div").click();
                        $("#cat_" + root + " > ul").html("<li id='cat_placeholder' class='last'><span>placeholder</span></li>");
                    }
                        $("#cat_" + root).addClass("hasChildren");
                        $("#cat_" + root + " > div").click();

Ну и стоит ещё заметить, что treeview использует $.getJSON() вместо $.ajax(). Опять таки пришлось переписать.



Метки: jQuery, jquery-ui, Dialog, treeview, AJAX, dev