我的网络应用程序中有一个“发送邮件”表单,允许用户发送有关我的应用程序的评论或建议。首先,我创建了一个简单的POST表单,该表单运行良好,并在发送邮件后重新加载了“您的邮件已成功发送”消息。
问题是当按下浏览器时,它会返回到相同的表单页面,因为它已经两次添加到历史记录堆栈中。
所以我所做的是通过AJAX使用jQuery发送表单发布请求,然后只在响应正常时显示消息。这是我正在使用的代码:
$.post(form.attr('action'), form.serialize(),
function (response) {
var success = eval(response).success;
if (success == '1')
showSuccessDialog(successMessage);
else
showSuccessDialog(errorMessage);
}, 'json')
.fail(function (data) {
showSuccessDialog(errorMessage);
});
问题是,我还有一个“附件”文件输入,可以正常POST请求,但不会通过我的AJAX帖子请求发送。
我做错了吗?有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
仅在较新的浏览器中支持通过XmlHttpRequest发送文件(读取:IE10),因此您可能需要验证是否已准备好执行此操作。
如果你是,请查看FormData JavaScript API。它允许发送文件以及您通常的表单数据。
有些JS插件使用这个API,所以你可能想环顾四周,看看你是否能找到可以使用的东西。我目前正在将其放在一起,所以您可能需要查看source code以供参考。