123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The source code</title>
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
- <style type="text/css">
- .highlight { display: block; background-color: #ddd; }
- </style>
- <script type="text/javascript">
- function highlight() {
- document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
- }
- </script>
- </head>
- <body onload="prettyPrint(); highlight();">
- <pre class="prettyprint lang-js"><span id='Ext-data-writer-Json'>/**
- </span> * @class Ext.data.writer.Json
- This class is used to write {@link Ext.data.Model} data to the server in a JSON format.
- The {@link #allowSingle} configuration can be set to false to force the records to always be
- encoded in an array, even if there is only a single record being sent.
- * @markdown
- */
- Ext.define('Ext.data.writer.Json', {
- extend: 'Ext.data.writer.Writer',
- alternateClassName: 'Ext.data.JsonWriter',
- alias: 'writer.json',
-
- <span id='Ext-data-writer-Json-cfg-root'> /**
- </span> * @cfg {String} root The key under which the records in this Writer will be placed. Defaults to <tt>undefined</tt>.
- * Example generated request, using root: 'records':
- <pre><code>
- {'records': [{name: 'my record'}, {name: 'another record'}]}
- </code></pre>
- */
- root: undefined,
-
- <span id='Ext-data-writer-Json-cfg-encode'> /**
- </span> * @cfg {Boolean} encode True to use Ext.encode() on the data before sending. Defaults to <tt>false</tt>.
- * The encode option should only be set to true when a {@link #root} is defined, because the values will be
- * sent as part of the request parameters as opposed to a raw post. The root will be the name of the parameter
- * sent to the server.
- */
- encode: false,
-
- <span id='Ext-data-writer-Json-cfg-allowSingle'> /**
- </span> * @cfg {Boolean} allowSingle False to ensure that records are always wrapped in an array, even if there is only
- * one record being sent. When there is more than one record, they will always be encoded into an array.
- * Defaults to <tt>true</tt>. Example:
- * <pre><code>
- // with allowSingle: true
- "root": {
- "first": "Mark",
- "last": "Corrigan"
- }
- // with allowSingle: false
- "root": [{
- "first": "Mark",
- "last": "Corrigan"
- }]
- * </code></pre>
- */
- allowSingle: true,
-
- //inherit docs
- writeRecords: function(request, data) {
- var root = this.root;
-
- if (this.allowSingle && data.length == 1) {
- // convert to single object format
- data = data[0];
- }
-
- if (this.encode) {
- if (root) {
- // sending as a param, need to encode
- request.params[root] = Ext.encode(data);
- } else {
- //<debug>
- Ext.Error.raise('Must specify a root when using encode');
- //</debug>
- }
- } else {
- // send as jsonData
- request.jsonData = request.jsonData || {};
- if (root) {
- request.jsonData[root] = data;
- } else {
- request.jsonData = data;
- }
- }
- return request;
- }
- });
- </pre>
- </body>
- </html>
|