Passing nested objects in Polymer core-ajax - ajax

I am trying to pass a nested object to Polymer core-ajax. Here is the code:
<core-ajax url="DSPUser1.php" method="POST" on-core-response="{{responseventDSPUser}}" params='{"userID":"Anon", "transactionType":"DSPUser", "payload":{"id":"1"}}' handleAs="json" id="transactionDSPUser" response="{{msgout}}">``
When I look at the POST in the Chrome tools I see the following under Form Data:
userID:Anon
transactionType:DSPUser
payload:[object Object]
It looks as if core-ajax is not handling nested objects.
Is this a feature or a bug?
Should I be using body instead of params?
Regardless is there a way to pass a nested object using core-ajax?
PS When I use JQuery $.POST Chrome shows the following for Form Data for a similar request
transactionType:DSPUSER
userdID:Anonymous
securityToken:
payload[iD]:1

If Im not wrong, params are converted into queryString. For POST operations you should use body instead.

Related

Polymer returning JSON object on AJAX success not using jquery

I'm trying to animate SVG images based on the degree provided by user. The requirement is that I have to read the degree from an external JSON file. I'm new to polymer so how can this be achieved?
You can use iron-ajax.
Here's an example:
<iron-ajax url="post.json" auto last-response="{{theResponse}}"></iron-ajax>
The url attribute here refers to the url target of the request, auto means that it performs the request either when the url or params changes, and last-response refers to the last response object you received.

Is Ajax with JSON or Ajax with dojo are same

I am new in Ajax . Want to use Ajax with Json . I am searching the tutorial for this and i find this.
I want to ask is i am in right direction ?
Is both things are same Ajax with Json and Ajax with dojo?
Not the same
Ajax is a technology that send request and accept data asynchronously(do not need to reload page).
You can use JSON or XML to send the data or just use the string.
When you do the Ajax request, any data type(like array, object, number..) except string will lost their data type and become string, so If you want to reserve their type, you must use data transmit format like JSON and XML.
Dojo just a library which have easier method for doing Ajax. You also can use jQuery, Angular,..Whatever even JavaScript native XMLHttpRequest.

JSONP, do you have to change your JSON file?

Can someone help me understand JSONP a little better?
I have a json file being out putted to a url. But due to same-origin policy I need to use JSONP. My question is do I need to change the actual JSON file or will using an ajax call with jquery, dataType: 'jsonp' do the work for me?
JSONP is nothing but, JSON with padding i.e. JSON wrapped by a function call. This format helps to pass the JSON data to java script.
JSON came into picture, when the JSON i.e. java script object can be used to represent the data, which was previously represented in the form of XML.
For example,
var data={...}; is data in json format. Whereas In JSONP, same data is written as getData(data);
In your scenario of ajax call, dataType:'jsonp', json data has to be passed as an argument to a function. You can access the response in that function.
If you could have provided some code, it will be easy to resolve your query. Information about JSONP is available on wikipedia here.
You will have to wrap your JSON data in a function call.
Like, someFunctionName(YOUR_EXISTING_JSON_DATA);
And,
use someFunctionName as jsonp callback
See, Cross-domain communications with JSONP

How do use JSON body in REST requests?

I am developing an API using Codeigniter and Phils RESTserver. I know how to send the request body in normal Form format but how can I send it as a JSON object instead?
I do this now:
lastname=bond
I want to do this instead:
{"lastname" : "bond"}
I tried to just replace the Content type header from:
application/x-www-form-urlencoded
In to this:
application/json
This did not do anything. Codeigniter says the POST array is empty.
If I understood correctly you want to create a request that contains a JSON node inside the request body. Assuming this, I think it's not possible to create such a request using simple HTML form tags as your browser always will try to pack your input vars in a querystring like format.
You will need JavaScript to achive this (I think all popular libs like Scriptacoulous or JQuery comes with helper methods for this).

jquery ajax data string. How do i make an object or escape the string?

I have a button which calls jquery.ajax and submits POST data. I need to get user text from a textarea. So far, no problem. However now i need to set the post data. I have a string in the form as k=v&k2=v2 etc and then i have this user text. I obviously cant write + "&usertext=" + usertext since the text may have code and &kxxx=val which should be inside of the usertext value.
How do i set the ajax data?
http://api.jquery.com/serialize/
You can call the jQuery method serialize on a form to get a valid data structure to pass in to jQuery.ajax instead of building it from scratch:
$.ajax({
data: $('#myform').serialize()
});
For the values outside of your textarea you can then add them as hidden inputs in your form and they'll be pulled in to the resulting serialize data.
there are at least 2 options:
1. use http://jquery.malsup.com/form/ jQuery plugin, see 'ajaxSubmit' method
2. use 'serialize' method of jQuery (seee here for details)

Resources