что не так с моим запросом http в javascript? - PullRequest
0 голосов
/ 14 ноября 2010

Я хочу отправить сообщение на сервер, состоящий из нескольких разных разделов. Цель состоит в том, чтобы отправить некоторую информацию в формате 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?

Ответы [ 2 ]

1 голос
/ 14 ноября 2010

Невозможно загрузить файл с помощью XMLHttpRequest. Вам нужно будет использовать Flash / Java или создать скрытый iframe и выполнить фактическую отправку. Я бы предложил использовать плагин javascript для загрузки файла "AJAX" .

0 голосов
/ 14 ноября 2010

Помимо ответа @tvanfosson, вам не хватает создания объекта xhttp:

var xhttp = new XMLHttpRequest();

Используйте любой отладчик, чтобы убедиться, что JS работает без исключений ...

...