On 15/11/2007, Matt Foster <[EMAIL PROTECTED]> wrote:
>
> Why are you making XHRs w/ the proprietary activeX syntax?  There is
> your first problem, adopt Ajax.Request for any and all XHRs and half
> your problems will be solved.
>
> Also be careful when sending an array of data.  When you have
> identically named pairs you can lose data.  You've got to use the
> square bracket notation on your names, check out this demo i set up.
> The responder justs print_r() the $_POST array..
>
> http://positionabsolute.net/projects/javascript/name-pair-test.html
>
>
> Lose data
> var str = "name=matt&name=william&name=tobie&name=sam";
>
> preserve data
> var str = "name[]=matt&name[]=william&name[]=tobie&name[]=sam";

There is a potential workaround.

Try this as your php script ...

<?php phpinfo(); ?>

Now run that like this ...

http://www.your-site.com/phpinfo.php?test=1&test=2

If you look through the config of your server, looking for test, you
will see that ...

$_SERVER['QUERY_STRING'] = 'test=1&test=2'
$_SERVER['REQUEST_URI'] = '/phpinfo.php?test=1&test=2'

But, as correctly mentioned by Matt, both $_GET and $_REQUEST (and
$_POST if that was the submission method) will lose the data.

I don't have a script to convert QUERY_STRING into an array that is
100% perfect (I've just realised that you can have multiple levels of
keys to support which makes it a little more awkward.

But, assuming the reason that you are using QUERY_STRING is because
you have not supplied keys (or used [] at all), then the following
script will help ...

<?php
// This function takes the servers QueryString and converts it to an array.
// It will deal with repeated names.
// An array is returned.
// NOTE: This function is specifically ignoring keys - if you have
supplied keys, then
//       you would not normally require this function.
function queryStringToArray()
        {
        // Default result is empty array.
        $a_Result = array();

        // Do we have anything to convert?
        if ('' != $_SERVER['QUERY_STRING'])
                {
                // Split the query string on a real &.
                $a_Parts = preg_split('`&(?!amp;)`sim', 
$_SERVER['QUERY_STRING']);

                // Process each part into the result array.
                foreach($a_Parts as $s_Part)
                        {
                        $i_EqualPos = strpos($s_Part, '=');
                        // If no = or = is at the end of Part, then Part is 
Name and Value
is empty string.
                        if ((0 == $i_EqualPos) || (strlen($s_Part) == 1 + 
$i_EqualPos))
                                {
                                // Remove any trailing =
                                $s_Name = rtrim($s_Part, '=');
                                $s_Value = '';
                                }
                        else
                                {
                                // Split on the first =
                                $s_Name = substr($s_Part, 0, $i_EqualPos);
                                $s_Value = substr($s_Part, 1 + $i_EqualPos);
                                }

                        // Does Name exist?
                        if (array_key_exists($s_Name, $a_Result))
                                {
                                // Make the stored value an array and add the 
new value.
                                $a_Result[$s_Name] = array($a_Result[$s_Name], 
$s_Value);
                                }
                        else
                                {
                                // Add the name/value to the results array.
                                $a_Result[$s_Name] = $s_Value;
                                }
                        }
                }

        return $a_Result;
        }
?>

Usage would be ...

<?php
$a_Data = queryStringToArray();
?>

As an example, test.php?test=1&test=2&test=3

results in an array of ...

array ( 'test' => array ( 0 => array ( 0 => '1', 1 => '2', ), 1 => '3', ), )

Richard.

> On Nov 14, 4:21 pm, TheWis <[EMAIL PROTECTED]> wrote:
> > Hi Guys, I am writing this code to pull URLs form txt file and pass
> > them to an array .. (this part is working well)  but the second part
> > which is sending each array element to external PHP file to get some
> > results is not working for me.
> >
> > The Text3.txt file is looking like this:
> >
> > http://site.info/http://site1.info/http://site.com/
> >
> > You can assume the blogs.php file will look like this :
> >
> > <?
> >    $keyword=$_REQUEST['keyword'];
> >         echo $keyword;
> > ?>
> >
> > Anybody can help me in that ? your help will be appreciated guys ..
> > here is my code
> >
> > <html>
> > <head>
> > <meta http-equiv="Content-Type" content="text/html;
> > charset=windows-1252">
> > <script src="prototype.js"></script>
> > <title>JS</title>
> > </head>
> > <body>
> > <SCRIPT LANGUAGE = JAVASCRIPT>
> >       var request = new ActiveXObject('Msxml2.XMLHTTP');
> >       request.open('get', 'Test3.txt', true);
> >       request.onreadystatechange = extractURLs;
> >       request.send();
> >        // document.write(responseText);
> >        function extractURLs() {
> >        // if (request.readyState == 4 && request.status == 200) {
> >            urlArray = request.responseText.split("\n")
> >            start_your_function(urlArray);
> >        // }
> >        document.write(urlArray.length);
> >
> >       }
> >             document.write(urlArray[5] + "<br />");
> >       var i=0 ;
> >       var dd= urlArray.length - 1;
> >
> >        document.write(dd);
> >        document.write(i);
> > for (i=0;i<=dd;i++)
> > {
> >  var keyword=urlArray[i];
> > // When I add this part it is not working any more
> >                    var request2 = new ActiveXObject('Msxml2.XMLHTTP');
> >
> >      new Ajax.Request('blogs.php?='+keyword, true);
> >
> >      Ajax.Responders.register(responder);
> >
> >          document.write(i);
> >
> >       document.write(keyword + "<br />"); */
> >
> >                }
> >
> >       </SCRIPT>
> >
> > </body>
> >
> > </html>
> >
>


-- 
-----
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
"Standing on the shoulders of some very clever giants!"

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to