我想向服务器发送一条消息,其中包含几个不同的部分。目标是向图像发送一些x-www-form-urlencoded信息。我尝试过这样做:http://en.wikipedia.org/wiki/MIME#Multipart_messages
这是我的js函数:
function sendPage() {
var source = document.getElementById("pageContainer")
var serializer = new XMLSerializer
if (!source.hasChildNodes()) {
alert("nie ma nic do wysłania")
return
}
var DOMNodeInString = "content=" + escape(serializer.serializeToString(source))
// sendToServer("savePage.php", true, handleAndShow, DOMNodeInString);return
xhttp.open("POST", "savePage.php", true)
var boundary = "xxx"
var body = "--" + boundary + "\r\n"
var file = document.getElementById("imgSource").files[0]
//wysyłam obrazek
if (file) {
var reader = new FileReader()
reader.readAsBinaryString(file)
body += "Content-Disposition: form-data; name='upload'; filename='" + file.name + "'\r\n"
body += "Content-Type: application/octet-stream\r\n\r\n"
body += reader.result + "\r\n"
body += "--" + boundary + "\r\n"
}
//wysyłam pozostałe pola formularza
body += "Content-Type: multipart/x-www-form-urlencoded \r\n\r\n"
body += DOMNodeInString
body += "\r\n--" + boundary + "--"
xhttp.setRequestHeader("Content-Type", "multipart/mixed; boundary=" + boundary)
xhttp.onreadystatechange = handleAndShow
alert(body)
xhttp.send(body)
}
但是,该功能不起作用。我的php脚本无法接收$ _POST [“content”]。我应该改变什么来改进js脚本?
答案 0 :(得分:1)
无法使用XMLHttpRequest上传文件。您需要使用Flash / Java或创建隐藏的iframe并进行实际提交。我建议为"AJAX" file upload使用javascript插件。
答案 1 :(得分:0)
除了@tvanfosson回答,你错过了xhttp对象的创建:
var xhttp = new XMLHttpRequest();
使用任何调试器来查看JS无异常工作......