JQuery отправлять данные HTML через POST
Я использую jQuery, чтобы сделать POST в файл PHP с содержимым HTML div. Содержимое HTML содержит таблицы, входы, меньшие div и я хотел бы захватить содержимое основного DIV и отправить его в базу данных. Единственный вариант, о котором я мог думать, это метод POST, но я не знаю, могу ли я отправить ему простой HTML. Есть ли другие варианты отправки содержимого HTML из div в файл PHP, который нужно вставить в MySQL?
Спасибо.
EDIT: Теперь я могу отправлять полные HTML-данные с помощью jQuery POST. Однако мои HTML-символы из этого DIV преобразуются в специальные символы. Пример: " > " станет "& gt;" и когда это произойдет, мои данные POST ограничены тем, где появляется первый специальный символ, потому что я делаю свой ajax POST следующим образом:
var data = 'id='+ currid +'&html='+ div_html;
$.ajax({
type: "POST",
url: "file.php",
data: data,
.......................
.......................
Использование этого кода не является нормально, потому что div_html содержит другие "&" символов, поэтому он будет рассматриваться как другой параметр POST для отправки.
Любые обходные пути?
Еще раз спасибо.
Ответы
Ответ 1
Насколько вам известно, когда вы "вытащили" содержимое с чем-то вроде . html(), это просто строка, Вы можете проверить это с помощью
<html>
<head>
<title>runthis</title>
<script type="text/javascript" language="javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
$(document).ready( function() {
var x = $("#foo").html();
alert( typeof(x) );
});
</script>
</head>
<body>
<div id="foo"><table><tr><td>x</td></tr></table><span>xyz</span></div>
</body>
</html>
Текст предупреждения string. Пока вы не передаете его парсеру, в нем нет магии, это строка, как любая другая строка.
Нет ничего, что помешало бы вам использовать . Post(), чтобы отправить эту строку на сервер.
изменить: не передавать строку в качестве параметра datai > в .post(), но объект, например
var data = {
id: currid,
html: div_html
};
$.post("http://...", data, ...);
jquery будет обрабатывать кодировку параметров.
Если вы (по какой-либо причине) хотите сохранить свою строку, вам нужно закодировать значения с помощью escape().
var data = 'id='+ escape(currid) +'&html='+ escape(div_html);
Ответ 2
Я не понимаю, почему вы не можете отправлять html-содержимое через сообщение.
Если вы столкнулись с какими-либо проблемами, возможно, вы используете какую-то кодировку/декодирование, но я не вижу, что вы это сделаете.
Ответ 3
Если вы хотите отправить произвольный объем данных на ваш сервер, POST - единственный надежный способ сделать это. GET также будет возможен, но клиенты и серверы допускают только ограниченную длину URL-адреса (примерно 2048 символов).
Ответ 4
jQuery.post(post_url,{ content: "John" } )
.done(function( data ) {
});