Проблема кодировки POST в Chrome XMLHttpRequest - PullRequest
0 голосов
/ 16 ноября 2011

Я отправляю файл с XMLHttpRequest, например:

self.xhr.open("POST", params.url + "?al=" + params.accessLevel + "&desc=" + params.desc + "&album_id=" + params.aid);

var boundary = "xxxxxxxxx";
self.xhr.setRequestHeader("Content-Type", "multipart/form-data, boundary="+boundary);
self.xhr.setRequestHeader("Cache-Control", "no-cache");
self.xhr.setRequestHeader("X-Requested-With", "ajx");

var body = "--" + boundary + "\r\n";
body += "Content-Disposition: form-data; name='"+(params.fieldName || 'file')+"'; filename='" + encodeURIComponent(params.file.name) + "'\r\n";
body += "Content-Type: application/octet-stream\r\n\r\n";
body += self.reader.result + "\r\n";
body += "--" + boundary + "--";

if(self.xhr.sendAsBinary) {
    // firefox
    //self.xhr.overrideMimeType("application/octet-stream; charset=utf-8");
    self.xhr.sendAsBinary(body);
} else {
    // chrome (W3C spec.)
    self.xhr.send(body);
}

В Firefox он работает отлично.Посмотрите на скриншот с firebug: http://s8.postimage.org/4dw4gd5j7/Untitled.png

Однако в Chrome это выглядит ужасно: http://s8.postimage.org/h7yrng8cl/chrome.png

Похоже на проблему с кодировкой.Я пытался добавить charset utf-8, но он все еще не работал.

1 Ответ

0 голосов
/ 16 ноября 2011

разные дескрипторы браузера разные.Вы бы попробовали jquery $ .ajax.библиотека javascript, такая как jquery, предполагается, что YUI помогает устранить разницу в браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...