[OpenLayers-Users] OpenLayers.Request problem; where is the data?

Tim Schaub tschaub at opengeo.org
Tue Nov 4 00:04:54 EST 2008


Hey-

Lehtonen, Mika wrote:
> Ok,
> 
> I'll get back to this when I have time. Thanks a lot.
> BTW: This is what OL API doc says about 'data': {Object} Any data to 
> send with the request. 
> http://dev.openlayers.org/releases/OpenLayers-2.7/doc/apidocs/files/OpenLayers/Request-js.html 
> Maybe I took that too literally. ;-)

Yes, that should be {String | Document}.  I'll change it and add a bit 
more detail.  Thanks for pointing that out.

Still, the important part to understand is the Content-Type header. 
Your data (string or document) could be one of any number of types of 
data.  The server won't know what to do with the data unless you tell it 
the content type.

The data here is the argument to the send method of XMLHttpRequest.  You 
can read more about that here:

http://www.w3.org/TR/XMLHttpRequest/

or, for the Mozilla implementation:

https://developer.mozilla.org/En/XMLHttpRequest

Tim

> 
> - mika -
> 
> Tim Schaub kirjoitti:
>> Hey-
>>
>> Tim Schaub wrote:
>>  
>>> Hey-
>>>
>>> Lehtonen, Mika wrote:
>>>    
>>>> Hi again,
>>>> using $_REQUEST (with your snippet), I get this. What's that?
>>>>
>>>> array(2) {
>>>>  ["__utma"]=>
>>>>  string(54) "81555458.1737773788.1225666548.1225666548.1225666548.1"
>>>>  ["__utmz"]=>
>>>>  string(69) 
>>>> "81555458.1225666548.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)"
>>>> }
>>>>       
>>> Those are cookie values.
>>>
>>> We (or I at least) can only help you out if you post code (preferably 
>>> legible).
>>>
>>> Thanks,
>>> Tim
>>>
>>>    
>>>> - mika -
>>>>
>>>> Lehtonen, Mika kirjoitti:
>>>>      
>>>>> Hi Tim,
>>>>>
>>>>> tested that. I get this: array(0) { }
>>>>>
>>>>>         
>>
>> If you really are doing exactly what I put below (creating a simple 
>> my.pyp thingy and POSTing using that exact syntax), then you could be 
>> having a character encoding issue.
>>
>> I don't know enough about PHP to know what they expect or handle - or 
>> how your installation is configured or what character set your browser 
>> may be using, but you might have to specify your charset in the 
>> Content-Type header:
>>
>>        var req = OpenLayers.Request.POST({
>>            url: "my.php",
>>            data: OpenLayers.Util.getParameterString({foo: "bar"}),
>>            headers: {
>>                "Content-Type":
>>           "application/x-www-form-urlencoded; charset=utf-8"
>>            }
>>        });
>>
>> If you are still having trouble, you'll probably want to spend some 
>> time with curl, RestTest (FF2 only), LiveHTTPHeaders, and/or other 
>> tools to examine exactly what is going on.
>>
>> Also, in your first post (to this list), you were using an object as 
>> the data value.  This needs to be a form-encoded string.  Note that I 
>> am using the OpenLayers.Util.getParameterString function above to get 
>> a form-encoded string from an object.
>>
>> Tim
>>
>>  
>>>>> I am trying to create a SLD on server side for Geoserver, based on 
>>>>> what has been selected on client side. So I have quite a huge 
>>>>> number (couple of thousands) of polygon regions of which an end 
>>>>> user can choose from (with a "tool"). Chosen polygons should be 
>>>>> presented with different style. So I decided to do that using wms. 
>>>>> Unfortunately, if I create my SLD on client side and send it server 
>>>>> by using GET, the request is way too long.
>>>>>
>>>>> Basically, an array of certain selected polygon attributes POSTED 
>>>>> to server, would be enough.
>>>>>
>>>>> - mika -
>>>>>
>>>>> Tim Schaub kirjoitti:
>>>>>  
>>>>>        
>>>>>> Hey-
>>>>>>
>>>>>> Can you write (preferably not all on one line) what you are doing 
>>>>>> again to make the request?  If you are setting the content type, 
>>>>>> include that.   Also, note that you can use the POST function and 
>>>>>> that you don't need the new keyword.  In addition, note that 
>>>>>> params are about GET and data is about POST.
>>>>>>
>>>>>> I just set up PHP here and confirmed that the following works:
>>>>>>
>>>>>>      var req = OpenLayers.Request.POST({
>>>>>>          url: "my.php",
>>>>>>          data: OpenLayers.Util.getParameterString({foo: "bar"}),
>>>>>>          headers: {
>>>>>>              "Content-Type": "application/x-www-form-urlencoded"
>>>>>>          }
>>>>>>      })
>>>>>>
>>>>>>
>>>>>> The content of my.php:
>>>>>>
>>>>>>      <?php var_dump($_POST); ?>
>>>>>>
>>>>>>
>>>>>> What I see in the response:
>>>>>>
>>>>>>      array(1) {
>>>>>>        ["foo"]=>
>>>>>>        string(3) "bar"
>>>>>>      }
>>>>>>
>>>>>>
>>>>>> The same answer is given here:
>>>>>> http://openlayers.org/pipermail/users/2008-October/008483.html
>>>>>>
>>>>>> I've put this example up on the Request wiki page:
>>>>>> http://trac.openlayers.org/wiki/Request#Ex.7:IssueaPOSTrequestwithform-encodeddata. 
>>>>>>
>>>>>>
>>>>>> And, this is now a FAQ:
>>>>>> http://faq.openlayers.org/ajax/how-do-i-post-form-encoded-data/
>>>>>>
>>>>>> Good luck,
>>>>>> Tim
>>>>>>
>>>>>> Lehtonen, Mika wrote:
>>>>>>               
>>>>>>> Actually I already tested that. Also setting the Content-length 
>>>>>>> and the Connection Close. I haven't been testing this with other 
>>>>>>> browsers than FireFox. It seems that the POST method isn't 
>>>>>>> responding in any way. Parameters attached to the request however 
>>>>>>> seem to be working just fine.
>>>>>>>
>>>>>>> There was another issue, which might be the same you pointed to 
>>>>>>> me, but the symtons are closer to mine:
>>>>>>>
>>>>>>> http://n2.nabble.com/OpenLayers.Request.POST-GET-errors-td1304742.html 
>>>>>>>
>>>>>>>
>>>>>>> - mika -
>>>>>>>
>>>>>>>
>>>>>>> Arnd Wippermann kirjoitti:
>>>>>>>                     
>>>>>>>> Perhaps this solves the problem
>>>>>>>>
>>>>>>>> headers: {
>>>>>>>>         "Content-Type": "application/x-www-form-urlencoded"}
>>>>>>>>
>>>>>>>> http://n2.nabble.com/OpenLayers.Request-POST-and-IE-6-7-issues-tt1384863.htm 
>>>>>>>>
>>>>>>>> l#a1395114
>>>>>>>>  
>>>>>>>>
>>>>>>>> Arnd Wippermann
>>>>>>>>
>>>>>>>>
>>>>>>>> -----Ursprüngliche Nachricht-----
>>>>>>>> Von: users-bounces at openlayers.org 
>>>>>>>> [mailto:users-bounces at openlayers.org] Im
>>>>>>>> Auftrag von Lehtonen, Mika
>>>>>>>> Gesendet: Montag, 3. November 2008 10:01
>>>>>>>> An: OpenLayers
>>>>>>>> Betreff: [OpenLayers-Users] OpenLayers.Request problem; where is 
>>>>>>>> the data?
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>> I am trying to send a POST request from OL with the following 
>>>>>>>> snippet:
>>>>>>>>
>>>>>>>> new OpenLayers.Request.issue({method: 'POST', url:'sld.php',
>>>>>>>> params:{abc:'def', cba:'fed'}, data:{ghi: 'jkl', ihg: 'lkj'},
>>>>>>>> success: function(){alert('Succeeded!');}, failure: 
>>>>>>>> function(){alert('Did not succeed.');}, callback: 
>>>>>>>> function(){alert('Calling back');}});
>>>>>>>>
>>>>>>>> $_POST array in sld.php stays empty. In $_GET array I can find the
>>>>>>>> params: def and fed. How can I get touch with the data? Am I 
>>>>>>>> doing something
>>>>>>>> wrong here?
>>>>>>>>
>>>>>>>> - mika -
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Users mailing list
>>>>>>>> Users at openlayers.org
>>>>>>>> http://openlayers.org/mailman/listinfo/users
>>>>>>>>
>>>>>>>>                               
>>>>>>> _______________________________________________
>>>>>>> Users mailing list
>>>>>>> Users at openlayers.org
>>>>>>> http://openlayers.org/mailman/listinfo/users
>>>>>>>                       
>>>>>>                 
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at openlayers.org
>>>>> http://openlayers.org/mailman/listinfo/users
>>>>>           
>>>     
>>
>>
>>   
> 


-- 
Tim Schaub
OpenGeo - http://opengeo.org
Expert service straight from the developers.



More information about the Users mailing list