Is it possible to post data to JsonP? Or does all data have to be passed in the querystring as a GET request?
I have alot of data that I need to send to the service, cross domain, and it is too large to send via the querystring
What are the options for getting around this?
JSONP has some other limitations, too: It can only be used for GET requests, and there's no general way to prevent cross-site request forgeries*. It's bad for private data, since any site on the web could hijack a JSONP response if the URL is known. This means it's best suited for consumption of public data feeds.
Method to use JSONP:In HTML code, include the script tag. The source of this script tag will be the URL from where the data to be retrieve. The web services allow to specify a callback function. In the URL include the callback parameter in the end.
Yes, JSONP is obsolete now. There's absolutely no reason to offer a JSONP service anymore.
The response is a javascript loaded on to your browser with name of the pre-defined function along with parameter being passed that is tht JSON data being requested. When the script executes, the function is called along with JSON data, allowing the requesting page to receive and process the data.
It is not possible to do an asynchronous POST
to a service on another domain, due to the (quite sensible) limitation of the same origin policy. JSON-P only works because you're allowed to insert <script>
tags into the DOM, and they can point anywhere.
You can, of course, make a page on another domain the action of a regular form POST.
Edit: There are some interesting hacks out there if you're willing to go to a lot of effort inserting hidden <iframe>
s and mucking about with their properties.
If you need to send a lot of data cross-domain. I usually create a service that you can call in two steps:
First the client do a FORM submit (post allowed cross domain). The service stores the input in the session on the server (using the GUID as key). (the client creates a GUID and send's it as a part of the input)
Then the client do a normal script-inject (JSONP) as a parameter you use the same GUID as you used in the FORM post. The service processes the input from the session and returns the data in the normal JSONP-fashion. After this the session is destroyed.
This of course relies on that you write the server-backend.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With