diff --git a/src/editable-form/editable-form.js b/src/editable-form/editable-form.js index 90e96f9..225f1de 100644 --- a/src/editable-form/editable-form.js +++ b/src/editable-form/editable-form.js @@ -219,7 +219,7 @@ Editableform is linked with one of input types, e.g. 'text' or 'select'. save: function(value) { var pk = (typeof this.options.pk === 'function') ? this.options.pk.call(this) : this.options.pk, send = !!(typeof this.options.url === 'function' || (this.options.url && ((this.options.send === 'always') || (this.options.send === 'auto' && pk)))), - params; + params, ajaxOptions; if (send) { //send to server this.showLoading(); @@ -243,12 +243,14 @@ Editableform is linked with one of input types, e.g. 'text' or 'select'. if(typeof this.options.url === 'function') { //user's function return this.options.url.call(this, params); } else { //send ajax to server and return deferred object - return $.ajax({ + ajaxOptions = $.extend({ url : this.options.url, data : params, type : 'post', dataType: 'json' - }); + }, this.options.ajaxOptions); + + return $.ajax(ajaxOptions); } } }, @@ -420,7 +422,16 @@ Editableform is linked with one of input types, e.g. 'text' or 'select'. if(!response.success) return response.msg; } **/ - success: function(response, newValue) {} + success: function(response, newValue) {}, + /** + Additional options for ajax request. + List of values: http://api.jquery.com/jQuery.ajax + + @property ajaxOptions + @type object + @default null + **/ + ajaxOptions: null }; /* diff --git a/test/unit/text.js b/test/unit/text.js index 538e786..8e56652 100644 --- a/test/unit/text.js +++ b/test/unit/text.js @@ -287,6 +287,9 @@ $(function () { equal(resp.data.name, 'username', 'name ok'); equal(resp.data.value, newText, 'value ok'); equal(resp.data.q, 2, 'additional params ok'); + }, + ajaxOptions: { + headers: {"myHeader": "123"} } }), newText = 'cd<e>;"' @@ -303,8 +306,38 @@ $(function () { start(); }, timeout); - }); - + }); + + asyncTest("ajaxOptions", function () { + var e = $('<a href="#" data-pk="1" data-url="post-options.php">abc</a>').appendTo(fx).editable({ + name: 'username', + ajaxOptions: { + dataType: 'html' + } + }), + newText = 'cd<e>;"' + + $.mockjax({ + url: 'post-options.php', + response: function(settings) { + equal(settings.dataType, 'html', 'dataType key ok'); + } + }); + + e.click() + var p = tip(e); + + ok(p.find('input[type=text]').length, 'input exists') + p.find('input').val(newText); + p.find('form').submit(); + + setTimeout(function() { + e.remove(); + start(); + }, timeout); + + }); + asyncTest("submit to url defined as function", function () { expect(3);