From 8807e4601f371a1169a4bbfe3e243a488baf4cc4 Mon Sep 17 00:00:00 2001 From: 1 Date: Wed, 9 Aug 2017 20:26:54 +0300 Subject: [PATCH] Added request parameters option --- Readme.md | 2 ++ index.js | 17 +++++++++++++---- package.json | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Readme.md b/Readme.md index 2b50b2a..61b80d5 100644 --- a/Readme.md +++ b/Readme.md @@ -26,6 +26,8 @@ $ jspm install npm:jsonp-promise is emitted. `0` to disable (defaults to `15000`) - `prefix` (`String`) prefix for the global callback functions that handle jsonp responses (defaults to `__jp`) + - `data` (`Object`) additional parameters for request (encoded as a part + of URL), optional Returns an object containing two properties: - `promise` a promise which will be resolved if the jsonp request succeeds, diff --git a/index.js b/index.js index 42d5d96..236d9a0 100644 --- a/index.js +++ b/index.js @@ -13,6 +13,7 @@ var count = 0; * - param {String} qs parameter (defaults to `callback`) * - timeout {Number} how long after the request until a timeout error * is emitted (defaults to `15000`) + * - data {Object} additional parameters for request (encoded as a part of URL) * * @param {String} url * @param {Object} options optional options @@ -23,6 +24,7 @@ var jsonp = function(url, options) { var prefix = options.prefix || '__jp'; var param = options.param || 'callback'; + var data = options.data || {} var timeout = options.timeout ? options.timeout : 15000; var target = document.getElementsByTagName('script')[0] || document.head; var script; @@ -35,6 +37,17 @@ var jsonp = function(url, options) { // Generate a unique id for the request. var id = prefix + (count++); + // add querystring + data[param] = id; + + var query = ''; + for (var key in data) { + query += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(data[key]); + } + + url = (~url.indexOf('?') ? '' : '?') + query; + url = url.replace('?&', '?'); + cleanup = function() { // Remove the script tag. if (script && script.parentNode) { @@ -61,10 +74,6 @@ var jsonp = function(url, options) { resolve(data); }; - // Add querystring component - url += (~url.indexOf('?') ? '&' : '?') + param + '=' + encodeURIComponent(id); - url = url.replace('?&', '?'); - // Create script. script = document.createElement('script'); script.src = url; diff --git a/package.json b/package.json index d3ecd26..f96761e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jsonp-promise", - "version": "0.1.2", + "version": "0.1.3", "description": "Jsonp es6 implementation that returns a promise.", "main": "index.js", "keywords": [