ajax提交表单的问题(挺棘手的)
首先:
1、页面有个表单:
<form id="form1" action="input.aspx" method="post" enctype="multipart/form-data">
//里面有多个text,多个file文本框。
//还有一个按钮
<input type="submit" id="btnReg" value="注册" onclick="return checkAll()" />
</form>
2、还有个提交表单代码:标题一
$("#tb input").live("change", function () { //动态绑定每个file
var file = $(this);
file.attr("name", "fileSrc");
if (CheckFilePath($(this))) {
$('#form1').ajaxSubmit({
url: 'input.aspx?action=' + "up",
type: "get",
success: function (data, status) {
if (status == "success") {
if (data == "no") {
alert("不能上传大于1M的图片");
file.parent().html("<input type='file' name='file'/>");
return;
}
msg(file, "ok");
}
}
});
}
else {
alert("请上传正确的图片");
file.parent().html("<input type='file' name='file'/>");
}
})
我的思路:
标题一(红色字体标出)是用户上传图片的时候(表单里面有file)我先判断是否过大,所以我 (url: 'input.aspx?action=' + "up")用了个标记。在后台接收action参数。用来确定是判断。而不是最后提交,以达到我在提交前先判断图片是否过大的效果。
我是想法:
当我这样提交的时候 $('#form1').ajaxSubmit 应该会覆盖(<form>)里面的url,type等属性。结果是正确的。同意。当我onclick="return checkAll()" 也应该覆盖 $('#form1').ajaxSubmit 里面的url、type的属性。但当我点击最后注册的时候。在后台还是能接收到action参数。
我需要解决的的问题:
当我 $('#form1').ajaxSubmit 的时候我传参过去。
当我点击 onclick="return checkAll()" 把之前的type或者url都覆盖。用form表单里面的方式进行。不知道这路能走通不。因为我不熟悉这些。望大家帮帮忙。。
[最优解释]
说到底 你这既是注册页面的及时验证被 用ASHX文件。这样你为每一个需要验证的控件指定一个AJAX方法到后台提交不就行了吗
[其他解释]
什么意思哦。因为我是刚学。你能给我举例吗?谢谢。
[其他解释]
<table>
<tr>
<td>用户名</td>
<td><input name="user" id="userName" type="text"/></td>
</tr>
<tr>
<td>头像</td>
<td><input name="file" id="fileName"/></td>
</tr>
</table>
<script>
$("#userName").blur(function({
$.ajax(function(){
参数.....
})
}))
$("#fileName").change(function(
$.ajax(function({
参数...
}))
))
</script>
[其他解释]
请问一下:
我后台是用这个来接收:
HttpPostedFile fil = Request.Files["fileSrc"];
int bytes = fil.ContentLength; //获取文件的字节大小
这里面的 参数怎么写:
$("#fileName").change(function(
$.ajax(function({
参数...
}))
))
[其他解释]
跟正常ajax提交一样的 $("fileName").val();
[其他解释]
[quote=引用:]
跟正常ajax提交一样的 $("fileName").val();
我是这样写的
$.ajax({
type:"post",
url:"input.aspx",
data:"name="+""+$("#file").val()
})
后台是这样写的
string nam = Request["name"]; //这个能接收到
HttpPostedFile op = Request.Files["name"]; //这个接收不到。如果这个接收不到。那就不能计算图片的大小呢。int byt = op.ContentLength;
我的目的是在用户选择图片的时候先在后台判断图片的大小。