perl-embperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Neil Gunton <n...@nilspace.com>
Subject Re: EMBPERL: accepting json
Date Thu, 08 Sep 2016 19:22:05 GMT
Donavon wrote:
> If I use Embperl to receive JSON data. That's where the issue
> arises. <script> |
>
> var formData = {"data1":a,"data2":b,"data3":c};
>
> $.ajax(
>
> {dataType:"json",
>
> contentType:"application/json; charset=UTF-8",
>
> url:'/folder1/doSomething1.epl',
>
> data:formData, success:function(response){ CurrentArray=response; } });
> </script>


Ok, so it sounds like you have some control over how the calls are 
happening on the client side, is that correct? I don't use JQuery 
myself, but fwiw here is roughly how I make an Ajax call using JSON 
data. I use a function createRequest that just wraps creating a new 
XMLHttpRequest (as well as picking up some exceptions to do with 
Microsoft etc - not really important here).

var data = {a: 1, b: 2, c: 3};
var params = 'data=' + encodeURIComponent (JSON.stringify (data));
createRequest();
if (request != null)
{
    var url = '/ajax/some_handler.html';
    request.open("POST", url, true);
    request.setRequestHeader("Content-type",
                             "application/x-www-form-urlencoded");
    request.setRequestHeader("Content-length", params.length);
    request.setRequestHeader("Connection", "close");
    request.onreadystatechange = the_callback_function;
    var result = request.send (params);
}

So I dunno if it's relevant, but I don't use "application/json" as the 
content type, but rather "application/x-www-form-urlencoded". On the 
server side, I use a .html page, but that could be anything you set up 
to be handled by Embperl in your Apache config. It doesn't have to 
actually produce html code, obviously, it could respond entirely in JSON 
or XML or whatever you want to set. But that's not really relevant - the 
important thing is that I am able to receive the call just fine, and it 
contains the JSON data in a form field called 'data' (arbitrary name, 
obviously, whatever you want to call it). I access it via %fdat as usual.

So, if you are in control of how the call happens from the client side, 
then it seems to me there's no reason why you can't pass JSON to 
Embperl, and there's no reason why it has to be "application/json". Like 
I said I dunno if the content type is the issue, but just a demo of a 
method that I use, that works fine.

Hope that helps,

Neil

---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-help@perl.apache.org


Mime
View raw message