1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- (function ($) {
- // 函数
- var ajaxSubmit = function (selector, callback) {
- var $form = $(selector);
- if ($form.attr('ajax-disabled') != undefined)
- return true;
- var options = {
- url: $form.attr('action') || window.location.href,
- type: $form.attr('method') || 'POST',
- beforeSend: function () {
- $.showLoading();
- },
- success: function (result) {
- if(callback && typeof(callback) === "function") {
- callback(result);
- }
- },
- complete: function() {
- $.hideLoading();
- }
- ,error:function(result){
- alert(JSON.stringify(result));
- }
- };
- if (!!$form.attr('enctype') && $form.attr('enctype').toLowerCase() === 'multipart/form-data') {
- var formData = new FormData();
- var $files = $form.find('input[type="file"][name]');
- $files.each(function() {
- if ('files' in this && this.files.length > 0) {
- // ToDo: Support Multiple on any input?
- // Just need a loop here..
- formData.append(this.name, this.files[0]);
- }
- });
- var $noFiles = $form.find(':not(input[type="file"])');
- $.each($noFiles.serializeArray(), function(i, pair) {
- formData.append(pair.name, pair.value);
- });
- options.data = formData;
- options.method = 'POST';
- options.contentType = false;
- options.processData = false;
- } else {
- options.data = $form.serializeArray();
- }
- $.ajax(options);
- };
- $.extend($.fn, {
- ajaxSubmit: function (callback) {
- $(this).form()
- $(document).off('submit', this.selector).on('submit', this.selector, function (e) {
- e.preventDefault();
- var $form = $(this);
- if ($form.attr('ajax-disabled') != undefined)
- return true;
- ajaxSubmit(this, callback);
- return false;
- });
- }
- })
- })(Zepto);
|