Javascript port of PHP's ParseURL





ranking Sort Sort   |   date Sort Sort   |   member Sort Sort
Syndication

« Previous 1 2  ...  18 19 20 21 22 23 24 25 26 Next »
5
Date Submitted Thu. Sep. 27th, 2007 8:02 AM
Revision 1
Scripter Fordiman
Tags JavaScript | PHP | Prototype | serialize
Comments 2 comments
This is the final version of my Javascript serializer targetted at PHP.

The point:
Objects are most easily passed over the network as serialized strings. Between serialization and unserialization, serialization is by far the easier of the two. Since object passing can sometimes be a process-hungry thing, we want to do things as quickly as possible.

My solution is to always do the hard part in compiled code, while doing the easy part in script. That is, whichever way you're passing an Object, you want to pass it in a natively decoded format for the target.

Since I work mostly in PHP, this meant writing a module that would be able to generate a string that can be decoded with PHP's unserialize() function into a PHP Associative Array (or other applicable type).

Notes:
This lib REQUIRES the Prototype lib. You can hack prototype out of it, of course (by replacing the references to Object.extend() with explicit assignments), but I can't imagine why you'd want to bother; it's used mostly with Ajax.Request anyway.

Previous versions of this code would add the .toPHP() member to the Object prototype. After trying to enumerate things, I found that this is a REALLY bad thing to do, as toPHP springs up where it's not wanted in ALL objects. As a result, I've opted to go the Prototype route and apply it as a member of the Object object.

Please note that if you pass a serialized string to PHP via GET or POST, you'll need to stripslashes() before unserialization.



Javascript sample of use:

var myObject = {
name:'value',
test:['Array','of','strings'],
bool:false,
timestamp: new Date(),
float: 3.1415926539,
number: 42,
func: function () {
alert('Member functions are always omitted from serialization');
}
}
alert(Object.toPHP(myObject));

Output:
a:7:{s:4:"name";s:5:"value";s:4:"test";a:3:{i:0;s:5:"Array";i:1;s:2:"of";i:2;s:7:"strings";}s:4:"bool";b:0;s:9:"timestamp";i:1190897619824;s:5:"float";d:3.1415926539;s:6:"number";i:42;s:4:"func";null}


Sample of subsequent unserialization in PHP (passed via POST as 'myobject')

$myObject=unserialize(stripslashes($_POST['myobject']));
var_dump($myObject);

Output:
array(7) {
["name"]=>
string(5) "value"
["test"]=>
array(3) {
[0]=>
string(5) "Array"
[1]=>
string(2) "of"
[2]=>
string(7) "strings"
}
["bool"]=>
bool(false)
["timestamp"]=>
int(1192296601)
["float"]=>
float(3.1415926539)
["number"]=>
int(42)
["func"]=>
NULL
}
6
Date Submitted Fri. Sep. 28th, 2007 2:08 AM
Revision 1
Scripter Fordiman
Tags JavaScript | promise | Prototype
Comments 6 comments
Here's a quick lil' addon for Prototype that I use often.

Prototype.Promise(condition, action, interval)
condition is a string that you want met before an action is run.
action is a function that does the action.
interval is the polling rate for condition in seconds, and defaults to 1

So, for example, you may want function foo to run, but only once bar has been set:

function foo(a,b) {
this.retVal=a+b;
}
var thingy = {
retVal:0
};
Prototype.Promise(
'thingy.retVal=5',
foo.bind(thingy,5,10),
5
);


Then, in some point in the mysterious future, thingy.retVal gets set to 5, at which point, the Promise goes into effect, and thingy.retVal becomes 10.

Where I find this particularly useful is in making sure that a document is loaded before doing something (condition="$$('body').length>=1), as you can see it used for the include functions.

Speaking of which, the following include functions are great for getting scripts and stylesheets into your page. I won't bother with examples, as they're pretty straightforward.

Meanwhile, Prototype.scriptPath will point to wherever in your server's heirarchy Prototype was loaded from. The regex, you'll note allows for names like prototype.compressed.js, prototype.modified.js, 2007-09-28.prototype.js, etc - just in case you want to keep track of your various hacks of Prototype, as I do.
5
Date Submitted Wed. Oct. 3rd, 2007 8:23 PM
Revision 1
Helper explode
Tags mysql | PHP | Time | tracking
Comments 1 comments
Well after searching the internet for something similar to this, I didn't come up with anything...so I made my own! This simple script will track your members' time spent on your website. Please feel free to give comments/suggestions/feedback.
3
Date Submitted Sun. Oct. 7th, 2007 3:47 AM
Revision 1
Helper chaos
Tags "diminishing returns" | formula | JavaScript | math
Comments 0 comments
A simple, flexible formula for generating diminishing returns out of input numbers. Full explanation and home, with sample calculators and versions of the code in other languages, on the Lost Souls MUD Grimoire.
6
Date Submitted Wed. Oct. 17th, 2007 2:34 PM
Revision 1
Helper chaos
Tags createElement | IE | JavaScript
Comments 0 comments
A wrapper on top of createElement for getting around IE problems with manipulating the name attribute. Unlike most solutions for this, it tests for which method to use once when the page loads rather than every time an element is created. By Chaos of Lost Souls MUD (a text-based fantasy RPG).
2
Date Submitted Thu. Oct. 18th, 2007 8:32 AM
Revision 1
Beginner Tr0y
Tags PHP
Comments 0 comments
Use this to print alternating values from an array.

It cycles through a series of values based on an iteration number.

For example, you could use this for alternating background colors.
5
Date Submitted Mon. Oct. 22nd, 2007 8:43 AM
Revision 1
Beginner richard123
Tags JavaScript | PHP | resolution
Comments 3 comments
This detects screen resolution using javascript and makes it available to php by way of cookies.
2
Date Submitted Wed. Nov. 7th, 2007 2:45 PM
Revision 1
Helper Idlemind
Tags PHP
Comments 2 comments
If it's a .php page, you can simply include this file where you want a hit counter to appear.

One file - text output. Very simple, very easy. Based off the filename of the page (creates a pagename.counter file to hold the count).
(No use for it myself - made it for a friend).
3
Date Submitted Tue. Nov. 13th, 2007 12:37 PM
Revision 1
Beginner cyberhitesh
Tags Online | PHP | PHP5 | Storage | Unlimited
Comments 0 comments
Software Requirements:

Crypt_HMAC:
http://pear.php.net/package/Crypt_HMAC
HTTP_REQUEST:
http://pear.php.net/package/HTTP_Request
PEAR:
http://pear.php.net/
4
Date Submitted Wed. Nov. 28th, 2007 8:14 AM
Revision 1
Helper HRCerqueira
Tags HTML | JavaScript
Comments 1 comments
This code allows you to set the "opcity" style attribute on a element without affecting it's content.

Just call the function for a specific element or to all elements of a given classname after the document loads.

Examples and advanced usage here...
« Previous 1 2  ...  18 19 20 21 22 23 24 25 26 Next »