submit api method refactor

This commit is contained in:
vitalets
2012-12-07 21:02:24 +04:00
parent da910f5d94
commit e79605fad6
3 changed files with 23 additions and 12 deletions

@ -4,7 +4,8 @@ X-editable changelog
Version 1.2.1 wip Version 1.2.1 wip
---------------------------- ----------------------------
[enh] removed default dataType='json' for submit request. Use 'ajaxOptions' to specify dataType if needed (vitalets) [enh] removed dataType='json' from 'submit' api method. Use 'ajaxOptions' to specify dataType if needed (vitalets)
[enh] removed dataType='json' from saving request. Use 'ajaxOptions' to specify dataType if needed (vitalets)
[enh] select: do not show 'sourceError' in element during autotext execution (vitalets) [enh] select: do not show 'sourceError' in element during autotext execution (vitalets)

@ -423,15 +423,15 @@ Makes editable any HTML element on the page. Applied as jQuery method.
/** /**
This method collects values from several editable elements and submit them all to server. This method collects values from several editable elements and submit them all to server.
It is designed mainly for <a href="#newrecord">creating new records</a>. Internally it runs client-side validation for all fields and submits only in case of success.
@method submit(options) @method submit(options)
@param {object} options @param {object} options
@param {object} options.url url to submit data @param {object} options.url url to submit data
@param {object} options.data additional data to submit @param {object} options.data additional data to submit
@param {object} options.ajaxOptions additional ajax options @param {object} options.ajaxOptions additional ajax options
@param {function} options.error(obj) error handler (called on both client-side and server-side validation errors) @param {function} options.error(errors) error handler
@param {function} options.success(obj) success handler @param {function} options.success(response, config) success handler. Passing __config__ to be able to call error handler.
@returns {Object} jQuery object @returns {Object} jQuery object
**/ **/
case 'submit': //collects value, validate and submit to server for creating new record case 'submit': //collects value, validate and submit to server for creating new record
@ -452,9 +452,9 @@ Makes editable any HTML element on the page. Applied as jQuery method.
type: 'POST' type: 'POST'
}, config.ajaxOptions)) }, config.ajaxOptions))
.success(function(response) { .success(function(response) {
//successful response //successful response 200 OK
if(typeof config.success === 'function') { if(typeof config.success === 'function') {
config.success.apply($elems, arguments); config.success.call($elems, response, config);
} }
}) })
.error(function(){ //ajax error .error(function(){ //ajax error
@ -464,7 +464,7 @@ Makes editable any HTML element on the page. Applied as jQuery method.
}); });
} else { //client-side validation error } else { //client-side validation error
if(typeof config.error === 'function') { if(typeof config.error === 'function') {
config.error.call($elems, {errors: errors}); config.error.call($elems, errors);
} }
} }
return this; return this;

@ -246,9 +246,8 @@ $(function () {
$(fx).find('.new').editable('submit', { $(fx).find('.new').editable('submit', {
url: 'new.php', url: 'new.php',
error: function(data) { error: function(errors) {
ok(data.errors, 'errors defined'); equal(errors.text, 'invalid', 'client validation error ok');
equal(data.errors.text, 'invalid', 'client validation error ok');
} }
}); });
@ -261,8 +260,19 @@ $(function () {
$(fx).find('.new').editable('submit', { $(fx).find('.new').editable('submit', {
url: 'new-error.php', url: 'new-error.php',
data: {a: 123}, data: {a: 123},
error: function(data) { success: function(data, config) {
equal(data.errors.text1, 'server-invalid', 'server validation error ok'); console.log(data);
ok(data.errors, 'errors received from server');
ok(typeof config.error === 'function', 'config passed correctly');
if(data && data.id) {
//success
} else if(data && data.errors){
config.error.call(this, data.errors); //call error from success
}
},
error: function(errors) {
equal(errors.text1, 'server-invalid', 'server validation error ok');
e.remove(); e.remove();
e1.remove(); e1.remove();
start(); start();