UNPKG

1.6 kBJavaScriptView Raw
1var Request = require('./Request');
2var constants = require('../shared/constants');
3var inherits = require('../shared/inherits');
4var handleOptions = require('../shared/handleOptions');
5var callRequestCreatedCallback = require('../shared/callRequestCreatedCallback');
6var addEventListeners = require('../jsonp/addEventListeners');
7var buildCallbackName = require('../jsonp/buildCallbackName');
8var buildScriptSrc = require('../jsonp/buildScriptSrc');
9
10/**
11 * JSONP request.
12 *
13 * @class
14 * @extends {Request}
15 * @param {RequestOptions} options The request options.
16 * @param {RequestSuccessCallback} onsuccess The callback to call on success.
17 * @param {RequestErrorCallback} onerror The callback to call on error.
18 */
19function JSONPRequest(options, onsuccess, onerror) {
20 var src;
21 var script;
22 var callbackName;
23 var containerNode;
24
25 Request.call(this, constants.JSONP_REQUEST, options, onsuccess, onerror);
26
27 // Call `options.handleOptions` to handle options.
28 handleOptions(options);
29
30 script = this.script = options.createScript.call(null, options);
31 containerNode = options.jsonpContainerNode.call(null, options);
32 callbackName = buildCallbackName(options);
33 src = buildScriptSrc(options, callbackName);
34
35 // Set the src attribute.
36 script.setAttribute('src', src);
37
38 // Add event listeners.
39 addEventListeners(this, callbackName);
40
41 // Inject the script node.
42 containerNode.appendChild(script);
43
44 // Call onRequestCreated.
45 callRequestCreatedCallback(options, this);
46}
47
48inherits(JSONPRequest, Request);
49
50module.exports = JSONPRequest;