2013-10-15 3 views
0

Я думаю, что я немного гоняюсь за своим хвостом и буду признателен, если кто-то меня устраивает. В моей программе Javascript мне нужно POST строку HTML, используя AJAX для моего PHP-сервера. Строка HTML может содержать встроенные данные изображения.HTML Строка и кодировка

Часть 1: Простой случай - HTML строка только текст - например - «вопрос Mmiz в»

<p>Mmiz&#39;s question</p> 

Если я ничего не делать WRT кодирование, то POST кажется колошматить все после апострофа, и это просто " Mmiz "на стороне сервера. Использование escape() также не устранило проблему! Что я должен делать, чтобы безопасно переносить строку html на сервер?

Часть 2: Если есть данные изображения в HTML, я основываю 64 URL SAFE закодировать данные изображения с помощью:

encodeURIComponent(str).replace(/'/g,"%27").replace(/"/g,"%22"); 

Является ли это правильный путь идти о нем?

Спасибо за руководство!

Mmiz

+0

Как и в первой части, вы также должны использовать encodeURIComponent, чтобы серверный скрипт не получал данные после '&' в качестве разделенного поля. – davidkonrad

+0

Итак, следуя вашему предложению - в моем коде jquery я сделал следующий encodeURIComponent (escape (html_str)). Затем на стороне сервера PHP я декодирую его таким образом: urldecode (encod_str). Без изменений. Все еще выходит как MMiz ' s на стороне сервера. О-У меня есть ContentType, указанный как: application/x-www-form-urlencoded; кодировка = UTF-8. – user1072910

ответ

0

Я думаю, что вы отправляете свои данные либо в виде GET данные или данные формы. В любом случае & обозначает конец параметра и начало следующего. Вы ДОЛЖНЫ кодировать это. Кроме того, рекомендуется кодировать и другие символы, например, используя encodeURIComponent.

Это, возможно, захочет изучить альтернативный метод. Например, я хотел бы просто представить свои данные прямо на сервер без каких-либо осложнений, поэтому запрос будет выглядеть следующим образом:

POST /somefile.php HTTP/1.0 
Host: example.com 
Content-Type: text/plain  -- or some relevant type, like application/json 
Content-Length: 13 

Hello, World! 

Затем на стороне сервера, в PHP в этом случае, я могу просто использовать file_get_contents("php://input") для получить данные, никаких проблем.

Смежные вопросы