Re: [PHP] Rasmus' 30 second AJAX Tutorial - [was Re: [PHP] AJAX PHP]

2005-07-23 Thread Chris Boget
 function sndReq(action) {
 http.open('get', 'rpc.php?action='+action);
 http.onreadystatechange = handleResponse;
 http.send(null);
 }

So with AJAX, the data gets sent back to the browser using GET?
Is there any way you can do it using POST?

thnx,
Chris

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Rasmus' 30 second AJAX Tutorial - [was Re: [PHP] AJAX PHP]

2005-07-23 Thread Rasmus Lerdorf
Chris Boget wrote:
function sndReq(action) {
http.open('get', 'rpc.php?action='+action);
http.onreadystatechange = handleResponse;
http.send(null);
}
 
 
 So with AJAX, the data gets sent back to the browser using GET?
 Is there any way you can do it using POST?

The prototype for the http.open method looks like this:

open(method,URL,async,uname,pswd)

So to do a POST request instead, just use 'post' instead of 'get' in the
first argument.  Then put the url encoded post data in the http.send() call.

-Rasmus

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Rasmus' 30 second AJAX Tutorial - [was Re: [PHP] AJAX PHP]

2005-07-22 Thread Rasmus Lerdorf
Richard Lynch wrote:
 On Thu, July 21, 2005 3:50 pm, Rasmus Lerdorf said:
 
I find a lot of this AJAX stuff a bit of a hype.  Lots of people have
been using similar things long before it became AJAX.  And it really
 
 
 Call me silly, but...
 
 Didn't a LOT of us move a bunch of code to PHP instead of JS because JS
 was so flaky, because browser implementations were so... diverse...,
 because you never knew if the user even *HAD* javascript, really, and you
 just didn't want to rely on it?
 
 Is anybody going to claim that any of the fundamental problems with
 client-side scripting have changed?  Got a bridge to sell, too?
 
 If it's just eye-candy, and doesn't matter to the functioning of your
 web-site, go for it.
 
 If you NEED it to work, JS is simply not the right way to go, even with
 today's landscape.

Browser technology has advanced a bit since then.  Today we are no
longer dealing with a pseudo-SGML hack called HTML like we were 10 years
ago.  Today's web browser is a DOM Tree viewer.  In Firefox you can
click on Tools-DOM Inspector and click through the tree of the page you
are on.

The language to manipulate this DOM Tree is Javascript.  And yes,
Javascript gets this DOM manipulation right, because it is so closely
integrated with the actual parsing of the tree.  If it didn't work, the
browser wouldn't work either.  For example, take this JS:

   foo = document.getElementById('some_id').value;

This obviously gets the value of the field with some_id.  This prods the
same DOM tree with the same code that the browser itself uses when it
wants to know what the value is in a given element of the tree.  So at
this level Javascript is fine, and yes, you can count on it working in
all modern browsers.  If any of them can't do this, they won't be around
long.

It gets a bit dicier when you try to extend out beyond simple document
manipulation, but that is really no different than trying to push the
boundaries of CSS or trying to get IE to speak CSS2.  The bar keeps
getting raised.  In my opinion it has been raised well above basic
Javascript for quite a while now.

-Rasmus

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Rasmus' 30 second AJAX Tutorial - [was Re: [PHP] AJAX PHP]

2005-07-21 Thread Rasmus Lerdorf
I find a lot of this AJAX stuff a bit of a hype.  Lots of people have
been using similar things long before it became AJAX.  And it really
isn't as complicated as a lot of people make it out to be.  Here is a
simple example from one of my apps.  First the Javascript:

function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == Microsoft Internet Explorer){
ro = new ActiveXObject(Microsoft.XMLHTTP);
}else{
ro = new XMLHttpRequest();
}
return ro;
}

var http = createRequestObject();

function sndReq(action) {
http.open('get', 'rpc.php?action='+action);
http.onreadystatechange = handleResponse;
http.send(null);
}

function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
var update = new Array();

if(response.indexOf('|' != -1)) {
update = response.split('|');
document.getElementById(update[0]).innerHTML = update[1];
}
}
}

This creates a request object along with a send request and handle
response function.  So to actually use it, you could include this js in
your page.  Then to make one of these backend requests you would tie it
to something.  Like an onclick event or a straight href like this:

  a href=javascript:sndReq('foo')[foo]/a

That means that when someone clicks on that link what actually happens
is that a backend request to rpc.php?action=foo will be sent.

In rpc.php you might have something like this:

  switch($_REQUEST['action']) {
case 'foo':
  /* do something */
  echo foo|foo done;
  break;
...
  }

Now, look at handleResponse.  It parses the foo|foo done string and
splits it on the '|' and uses whatever is before the '|' as the dom
element id in your page and the part after as the new innerHTML of that
element.  That means if you have a div tag like this in your page:

  div id=foo
  /div

Once you click on that link, that will dynamically be changed to:

  div id=foo
  foo done
  /div

That's all there is to it.  Everything else is just building on top of
this.  Replacing my simple response id|text syntax with a richer XML
format and makine the request much more complicated as well.  Before you
blindly install large AJAX libraries, have a go at rolling your own
functionality so you know exactly how it works and you only make it as
complicated as you need.  Often you don't need much more than what I
have shown here.

Expanding this approach a bit to send multiple parameters in the
request, for example, would be really simple.  Something like:

  function sndReqArg(action,arg) {
http.open('get', 'rpc.php?action='+action+'arg='+arg);
http.onreadystatechange = handleResponse;
http.send(null);
  }

And your handleResponse can easily be expanded to do much more
interesting things than just replacing the contents of a div.

-Rasmus

Joe Harman wrote:
 Yeah, AJAX is really going to change the way web applications are made... 
 I've messed around with the tutorials with it... 
  I've also seen it referred to as XMLHttpRequest .. I think the AJAX class 
 transforms your PHP functions into javascript... seems like the class is 
 just made to for people like me who are heavy with PHP... but don't have a 
 clue about javascript... from my impression you need to be able to have a 
 tiny bit of javascript programming skill to really put it to use... do a 
 search on google for XMLHttpRequest PHP Tutorial .. there is a lot there
  Good Luck.. 
 Joe
 
  On 7/21/05, Paul Waring [EMAIL PROTECTED] wrote: 
 
On Thu, Jul 21, 2005 at 11:22:25AM +0530, balwant singh wrote:

Have anybody tried PHP  AJAX, may please share your experience. also
pls. suggest good link of tutorial on this.

I haven't tried it myself, but this looks rather good, article on how to
implement Google Suggest in PHP:

http://tinyurl.com/dxs8b

Paul

--
Rogue Tory
http://www.roguetory.org.uk

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


 
 
 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Rasmus' 30 second AJAX Tutorial - [was Re: [PHP] AJAX PHP]

2005-07-21 Thread Richard Lynch
On Thu, July 21, 2005 3:50 pm, Rasmus Lerdorf said:
 I find a lot of this AJAX stuff a bit of a hype.  Lots of people have
 been using similar things long before it became AJAX.  And it really

Call me silly, but...

Didn't a LOT of us move a bunch of code to PHP instead of JS because JS
was so flaky, because browser implementations were so... diverse...,
because you never knew if the user even *HAD* javascript, really, and you
just didn't want to rely on it?

Is anybody going to claim that any of the fundamental problems with
client-side scripting have changed?  Got a bridge to sell, too?

If it's just eye-candy, and doesn't matter to the functioning of your
web-site, go for it.

If you NEED it to work, JS is simply not the right way to go, even with
today's landscape.

-- 
Like Music?
http://l-i-e.com/artists.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Rasmus' 30 second AJAX Tutorial - [was Re: [PHP] AJAX PHP]

2005-07-21 Thread Duncan Hill
On Friday 22 July 2005 02:46, Richard Lynch wrote:
 If you NEED it to work, JS is simply not the right way to go, even with
 today's landscape.

I think that depends on whether you have a closed environment, such as an 
intranet, or an open environment like a public web server.  In the public 
case, I'd agree that relying on JS is a bad idea.  On a controlled closed 
environment, there's a good chance that it's an OK idea (and perhaps a good 
idea).

I'm working in a closed environment - I can see some really useful tricks with 
the JS based 'go check this and come back' method for some of the input 
fields I need.  Will I actually do it?  I dunno, I have other things to write 
first :

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php