http://www.perlmonks.org?node_id=976437


in reply to Re: Perl json parser and JSONP issue
in thread Perl json parser and JSONP issue

I know that, so that`s why I posted my javascript code. You can clearly see that I am passing a JSON file to a callback function, as I followed 2 examples. I just get nothing. When I press the button ( who executes the JSONP creation ) it`s ok, in firebug I do see the json object clearly, it is in the DOM but nothing more.. Most examples say that this must work fine.

Replies are listed 'Best First'.
Re^3: Perl json parser and JSONP issue
by tobyink (Canon) on Jun 15, 2012 at 14:39 UTC

    "You can clearly see that I am passing a JSON file to a callback function"

    Yes - that's entirely the problem. Your function expects to be get JSONP, and it's being given JSON. As I said: JSON and JSONP are different file formats.

    You script is trying to get some JSONP from http://localhost/dat.json?callback=dbg but it's being given JSON. JSON and JSONP are different file formats.

    Here's an example JSON file:

    { "name": "Joe Bloggs" }

    Here's an example JSONP file:

    process({ "name": "Joe Bloggs" });

    As you can see, they look a little bit different. That's because JSON and JSONP are different file formats.

    Also, make sure you're sending the correct HTTP headers.

    • For JSON, you want Content-Type: application/json.
    • For JSONP, you want Content-Type: application/ecmascript or Content-Type: application/javascript or Content-Type: text/javascript.

    Note the difference: that's because JSON and JSONP are different file formats.

    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

      Well you are right... it`s kind of confusing... So if I am right, every time I create and record a JSON, I have to convert it to JSONP with wrapping it with the function before calling it back...

        Typically you'd configure your web server (or some other piece of middleware) to convert your JSON to JSONP on the fly. I'm surprised there isn't an Apache mod_jsonp that I can point you towards.

        perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'