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
----------------------------
[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)

@ -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.
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)
@param {object} options
@param {object} options.url url to submit data
@param {object} options.data additional data to submit
@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.success(obj) success handler
@param {function} options.error(errors) error handler
@param {function} options.success(response, config) success handler. Passing __config__ to be able to call error handler.
@returns {Object} jQuery object
**/
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'
}, config.ajaxOptions))
.success(function(response) {
//successful response
//successful response 200 OK
if(typeof config.success === 'function') {
config.success.apply($elems, arguments);
config.success.call($elems, response, config);
}
})
.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
if(typeof config.error === 'function') {
config.error.call($elems, {errors: errors});
config.error.call($elems, errors);
}
}
return this;

@ -246,9 +246,8 @@ $(function () {
$(fx).find('.new').editable('submit', {
url: 'new.php',
error: function(data) {
ok(data.errors, 'errors defined');
equal(data.errors.text, 'invalid', 'client validation error ok');
error: function(errors) {
equal(errors.text, 'invalid', 'client validation error ok');
}
});
@ -261,8 +260,19 @@ $(function () {
$(fx).find('.new').editable('submit', {
url: 'new-error.php',
data: {a: 123},
error: function(data) {
equal(data.errors.text1, 'server-invalid', 'server validation error ok');
success: function(data, config) {
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();
e1.remove();
start();