我使用了一个教程来获得下面的ajax代码。在教程中,他们有库jquery.form.js.下面是代码:
function onsuccess(response,status){
$("#onsuccessmsg").html(response);
alert(response);
}
$("#uploadform").on('change',function(){
var options={
url : $(this).attr("action"),
success : onsuccess
};
$(this).ajaxSubmit(options);
return false;
});
如果我不想要jquery呢。类型实现了js。使用普通ajax(没有库)的等效代码是什么?
使现代化
我尝试了以下代码:
$("#uploadform").on('change',function(){
$.ajax({
url: $(this).attr("action"),
context: document.body,
success: function(){
$("#onsuccessmsg").html(response);
alert("asdf");
}
});
return false;
});
现在它什么也做不了。
这更像是:(为格式问题道歉,我在手机上)
$("#uploadform").on('submit',function(e){
e. preventDefault() ;
var formData = new FormData($(this)[0]);
$.ajax({
url: $(this).attr("action"),
context: document.body,
data: formData,
type: "POST",
contentType: false,
processData: false,
success: function(response, status, jqxhr){
$("#onsuccessmsg").html(response);
alert("asdf");
}
});
return false;
});
需要通过运行表单字段手动构建数据变量。您可能还想查看jQuery post,这是编写上述内容的一种速记方式。
您可以使用前面回答的问题获取需要传递到ajax数据字段的表单数据:
如何使用Javascript/jQuery获取表单数据?
还值得注意的是,如果您要发布表单中的文件,则表单必须具有enctype=“multipart/form data”
。使用ajax提交表单时,需要设置contentType:false,processData:false
。参考这篇文章。
我已经更新了上面的代码片段以反映这一点。
如果这回答了您的问题,请将其标记为正确答案。