×

ajax不用form上传文件

ajax不用form上传文件(ajax可以不使用js脚本吗)

admin admin 发表于2023-03-11 13:43:09 浏览44 评论0

抢沙发发表评论

本文目录一览:

Ajax提交表单,所以有没有Form标签有关系吗

用不用form都没关系的,如果用jquery.ajax的异步提交,其中url的参数传入自己拼装的url或者使用data参数传参。

如果使用form,则只需要加上jQuery('form').serialize()

jquery就会自动把form里有属性name的元素的值组装成url来传递。

html可以不使用form上传文件吗?

选好上传文件并填写相应信息才能上传

或是能过js控制,form1先通过ajax submit再让form2跳转

或是把值都取出来一起post到服务器等等方式

如何不用form上传文件

html与服务器交互本质就是form提交,不用form服务器不可能得到数据。

$.ajax()里面构造form表单然后把file标签append到form中post提交。注意上传form的属性类型要加multi....data(忘记名字了类似这个)

ajax如何 实现 文件上传

程序说明

使用说明

实例化时,第一个必要参数是file控件对象:

new QuickUpload(file);

第二个可选参数用来设置系统的默认属性,包括

属性:    默认值//说明

parameter: {},//参数对象

action:  "",//设置action

timeout: 0,//设置超时(秒为单位)

onReady: function(){},//上传准备时执行

onFinish: function(){},//上传完成时执行

onStop:  function(){},//上传停止时执行

onTimeout: function(){}//上传超时时执行

还提供了以下方法:

upload:执行上传操作;

stop:停止上传操作;

dispose:销毁程序。

var QuickUpload = function(file, options) {

this.file = $$(file);

this._sending = false;//是否正在上传

this._timer = null;//定时器

this._iframe = null;//iframe对象

this._form = null;//form对象

this._inputs = {};//input对象

this._fFINISH = null;//完成执行函数

$$.extend(this, this._setOptions(options));

};

QuickUpload._counter = 1;

QuickUpload.prototype = {

//设置默认属性

_setOptions: function(options) {

this.options = {//默认值

action:        "",//设置action

timeout:    0,//设置超时(秒为单位)

parameter:    {},//参数对象

onReady:    function(){},//上传准备时执行

onFinish:    function(){},//上传完成时执行

onStop:        function(){},//上传停止时执行

onTimeout:    function(){}//上传超时时执行

};

return $$.extend(this.options, options || {});

},

//上传文件

upload: function() {

//停止上一次上传

this.stop();

//没有文件返回

if ( !this.file || !this.file.value ) return;

//可能在onReady中修改相关属性所以放前面

this.onReady();

//设置iframe,form和表单控件

this._setIframe();

this._setForm();

this._setInput();

//设置超时

if ( this.timeout  0 ) {

this._timer = setTimeout( $$F.bind(this._timeout, this), this.timeout * 1000 );

}

//开始上传

this._form.submit();

this._sending = true;

},

//设置iframe

_setIframe: function() {

if ( !this._iframe ) {

//创建iframe

var iframename = "QUICKUPLOAD_" + QuickUpload._counter++,

iframe = document.createElement( $$B.ie ? "iframe name=\"" + iframename + "\"" : "iframe");

iframe.name = iframename;

iframe.style.display = "none";

//记录完成程序方便移除

var finish = this._fFINISH = $$F.bind(this._finish, this);

//iframe加载完后执行完成程序

if ( $$B.ie ) {

iframe.attachEvent( "onload", finish );

} else {

iframe.onload = $$B.opera ? function(){ this.onload = finish; } : finish;

}

//插入body

var body = document.body; body.insertBefore( iframe, body.childNodes[0] );

this._iframe = iframe;

}

},

//设置form

_setForm: function() {

if ( !this._form ) {

var form = document.createElement('form'), file = this.file;

//设置属性

$$.extend(form, {

target: this._iframe.name, method: "post", encoding: "multipart/form-data"

});

//设置样式

$$D.setStyle(form, {

padding: 0, margin: 0, border: 0,

backgroundColor: "transparent", display: "inline"

});

//提交前去掉form

file.form  $$E.addEvent(file.form, "submit", $$F.bind(this.dispose, this));

//插入form

file.parentNode.insertBefore(form, file).appendChild(file);

this._form = form;

}

//action可能会修改

this._form.action = this.action;

},

//设置input

_setInput: function() {

var form = this._form, oldInputs = this._inputs, newInputs = {}, name;

//设置input

for ( name in this.parameter ) {

var input = form[name];

if ( !input ) {

//如果没有对应input新建一个

input = document.createElement("input");

input.name = name; input.type = "hidden";

form.appendChild(input);

}

input.value = this.parameter[name];

//记录当前input

newInputs[name] = input;

//删除已有记录

delete oldInputs[name];

}

//移除无用input

for ( name in oldInputs ) { form.removeChild( oldInputs[name] ); }

//保存当前input

this._inputs = newInputs;

},

//停止上传

stop: function() {

if ( this._sending ) {

this._sending = false;

clearTimeout(this._timer);

//重置iframe

if ( $$B.opera ) {//opera通过设置src会有问题

this._removeIframe();

} else {

this._iframe.src = "";

}

this.onStop();

}

},

//销毁程序

dispose: function() {

this._sending = false;

clearTimeout(this._timer);

//清除iframe

if ( $$B.firefox ) {

setTimeout($$F.bind(this._removeIframe, this), 0);

} else {

this._removeIframe();

}

//清除form

this._removeForm();

//清除dom关联

this._inputs = this._fFINISH = this.file = null;

},

//清除iframe

_removeIframe: function() {

if ( this._iframe ) {

var iframe = this._iframe;

$$B.ie ? iframe.detachEvent( "onload", this._fFINISH ) : ( iframe.onload = null );

document.body.removeChild(iframe); this._iframe = null;

}

},

//清除form

_removeForm: function() {

if ( this._form ) {

var form = this._form, parent = form.parentNode;

if ( parent ) {

parent.insertBefore(this.file, form); parent.removeChild(form);

}

this._form = this._inputs = null;

}

},

//超时函数

_timeout: function() {

if ( this._sending ) { this._sending = false; this.stop(); this.onTimeout(); }

},

//完成函数

_finish: function() {

if ( this._sending ) { this._sending = false; this.onFinish(this._iframe); }

}

}

用ajax提交,不用form提交,如何进行表单数据验证?jsp页面无标签

有2种方式,一种是把表单序列化后ajax提交给后台,这种没用过,但看到jquery的ajax提交是这种

还有一种直接 $.post(url,{},function(){}) 第二个参数是传递的数值 key:value形式的,多个参数用逗号分开