Re: RE: AJAX with POST

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ajax is asynchronous. The option of asynchronous or synchronous can be set
in the XMLHTTPRequest object (used by Ajax), but a synchronous call is not
Ajax.

Cheers,
Bruno.

2009/4/5 Phpster <phpster@xxxxxxxxx>

> Ajax can be both async and sync. Itsbthe fourth param in the open call and
> I believe by default it's a sync call not async
>
> Bastien
>
> Sent from my iPod
>
> On Apr 4, 2009, at 21:33, Skip Evans <skip@xxxxxxxxxxxxxxxxx> wrote:
>
>  But my function using GET does seem to wait.
>>
>> Granted I cobbled it together from various samples and didn't author it
>> from my own deep understanding of the exact process, but here's the snippet
>> that does the real work.
>>
>> req.open('GET', url, false);
>> req.send(null);
>>
>> if(req.responseText) {
>>  if(req.responseText.substring(0,7) == 'debug!!') {
>>      alert(req.responseText.substring(7));
>>  }
>> }
>>
>> return(req.responseText);
>>
>> It seems to wait until it has data to return, because it works perfectly.
>> I can send it a URL from another function and get the data back from server
>> to the function as expected.
>>
>> The only part of it I'm unsure of is this:
>>
>> req.send(null);
>>
>> What does that do? As I said, I cobbled this function from examples, got
>> it working, and presto, was off and running.
>>
>> Skip
>>
>>
>> Brad Broerman wrote:
>>
>>> Well, as the "A" in Ajax is asynchronous, there's no real way to make it
>>> wait. What you would normally do is use a callback:
>>>   function createXHRObject( )
>>>   {
>>>       if (typeof XMLHttpRequest != "undefined")
>>>       {
>>>           return new XMLHttpRequest();
>>>       }
>>>       else if (typeof ActiveXObject != "undefined")
>>>       {
>>>           return new ActiveXObject("Microsoft.XMLHTTP");
>>>       }
>>>       else
>>>       {
>>>           throw new Error("XMLHttpRequest not supported");
>>>       }
>>>   }
>>>   function sendAjaxRequest( websvcurl , params, callbackFn )
>>>   {
>>>       var xhrObject = createXHRObject();
>>>       xhrObject.open("POST", websvcurl, true);
>>>       xhrObject.onreadystatechange = function()
>>>       {
>>>           if (xhrObject.readyState == 4)
>>>           {
>>>               if( xhrObject.responseXML != null )
>>>               {
>>>                       callbackFn (xhrObject.responseXML);
>>>               }
>>>           }
>>>       }
>>>       xhrObject.setRequestHeader("Content-type",
>>> "application/x-www-form-urlencoded");
>>>       xhrObject.setRequestHeader("Content-length", params.length);
>>>       xhrObject.setRequestHeader("Connection", "close");
>>>       xhrObject.send(params);
>>>
>>>   }
>>> -----Original Message-----
>>> From: Skip Evans [mailto:skip@xxxxxxxxxxxxxxxxx]
>>> Sent: Saturday, April 04, 2009 5:30 PM
>>> To: php-general@xxxxxxxxxxxxx
>>> Subject: AJAX with POST
>>> Hey all,
>>> At the risk of being told this is a PHP and not a JS list, but
>>> also knowing the discussions on this list, to the benefit of
>>> all I believe, very wildly, I'm posting this JS code snippet
>>> for some advice.
>>> As I posted earlier, my AJAX app that uses a GET to post to
>>> the server (and get a response), fails on IE with larger data,
>>> so I thought I'd take a shot at writing a POST function, but
>>> so far I can get it to get the data back, but the problem is
>>> by the time the data has come back the function has already
>>> returned null back to the calling function. What I need this
>>> function to do is wait for the data to come back and then send
>>> it back to caller. Here's the function. Any advice would be
>>> greatly appreciated. (The code to get the appropriate object
>>> per browser has been omitted.)
>>> http.open("POST", url, true);
>>> //Send the proper header information along with the request
>>> http.setRequestHeader("Content-type",
>>> "application/x-www-form-urlencoded");
>>> http.setRequestHeader("Content-length", url.length);
>>> http.setRequestHeader("Connection", "close");
>>> http.send(url);
>>> http.onreadystatechange = function() {//Call a function when
>>> the state changes.
>>> if(http.readyState == 4 && http.status == 200) {
>>>   alert('['+http.responseText+']');
>>>   return (http.responseText);
>>>   }
>>> }
>>> --
>>> ====================================
>>> Skip Evans
>>> Big Sky Penguin, LLC
>>> 503 S Baldwin St, #1
>>> Madison WI 53703
>>> 608.250.2720
>>> http://bigskypenguin.com
>>> ------------------------------------
>>> Those of you who believe in
>>> telekinesis, raise my hand.
>>>  -- Kurt Vonnegut
>>>
>>
>> --
>> ====================================
>> Skip Evans
>> Big Sky Penguin, LLC
>> 503 S Baldwin St, #1
>> Madison WI 53703
>> 608.250.2720
>> http://bigskypenguin.com
>> ------------------------------------
>> Those of you who believe in
>> telekinesis, raise my hand.
>> -- Kurt Vonnegut
>>
>> --
>> 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
>

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux