我实现了这个使用 xmlhttpreqeust 的表单提交方法。我看到了新的 html5 功能 FormData,它允许将文件与表单一起提交。凉爽的!但是,重音字符存在问题,特别是 Word 制作的那些愚蠢的智能引号(是的,我对这些字符有点偏见)。我曾经让它提交给一个隐藏的 iframe,这是老式的方式,而且我从来没有对放入其中的各种奇怪的字符有任何问题。但我认为这会更好。事实证明这是一个更大的头痛:-/
让我们看一下代码。我的 javascript 函数(注意注释掉的行):
var xhr = new XMLHttpRequest();
var fd = new FormData(form);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.open($(form).attr('method'), $(form).attr('action'));
//xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
xhr.send(fd);
这是一个简短的视图,请查看http://archive.cyark.org/sitemanager/sitemanager.js的第 1510 行以查看整个函数。
然后在接收 php 页面上,我在顶部:
header('Content-Type: text/html; charset=ISO-8859-1');
接下来是一些基本的 php 以使用帖子数据构建一个字符串并将其作为更新提交给 mysql。
那我该怎么办?如果我取消注释 javascript 中的内容类型设置,它会完全破坏我的 php 脚本中的 POST 数据。我不知道问题出在 javascript、php 还是 mysql 中。有什么想法吗?