我有一个包含太多字段的表单。我想要做的是首先使用jquery进行一些验证;到目前为止工作正常。 我有一个事件处理程序“onclik”,它验证用户上传的文件类型,如果文件不是图像,则向用户显示一条消息。如果文件是好的,它应该将一些数据发送到服务器并等待响应。 到目前为止,一切对我来说都很好,但是ajax不起作用。请帮我 这是我的代码:
$(document).ready(function(){
//$(\'#saveData\').bind(\'click\', function() {
//$(\'#saveData\').live(\'click\', function() {
$(\'#saveData\').click( function(){
var ext = $("#articlePhoto").val().split(".").pop().toLowerCase();
var allow = new Array("gif","png","jpg","jpeg","");
if(jQuery.inArray(ext, allow) == -1) {
$("div.fileType").html("some error message");
$("div.fileType").attr("tabindex",-1).focus();
return false;
}
else
{
$.ajax({
type: "POST",
url: url+"somefile.php",
data: "item1=somedata&item2=others",
success: function(data){
alert(data); // doesn't work
}
});
}
});
});
由于
答案 0 :(得分:1)
您无法从文件名中可靠地检查文件类型。 Mac和Linux机器具有确定文件类型而不是扩展的其他机制,即使在Windows下,您也无权访问文件扩展名到类型的映射。
如果您无法识别其扩展名中的文件类型(例如,出现在文件上传字段的change
上),则打印警告可能是合适的,但是当发生这种情况时,您不应阻止上传。 / p>
除此之外,ajax()
调用应该有效:
ajax()
请求时,您没有返回false。如果#saveData
是表单提交按钮,则表示该表单仍会在点击时提交,该导航会取消ajax()
来电; 我真的不知道应该做什么:
$("div.fileType").attr("tabindex",-1).focus();
否定tabindexes是非标准IE扩展;为什么要从标签序列中删除该字段?
如果不是这样,请在参数中添加error: function() { ... }
以检查调用是否实际返回了一些功能,并检查JS控制台是否存在错误。