Вопрос по ajax, jquery, encoding – jQuery отправляет данные HTML через POST

22

Я использую jQuery для создания POST-файла PHP с HTML-содержимым div. Содержимое HTML содержит таблицы, входные данные, меньшие div, и я хотел бы получить содержимое основного DIV и отправить его в базу данных. Единственный вариант, о котором я могу подумать, - это метод POST, но я не знаю, смогу ли я отправить с ним простой HTML. Есть ли другие варианты для отправки содержимого HTML из div в файл PHP для вставки в MySQL?

Благодарю.

EDIT: Теперь я могу отправлять полные данные HTML с помощью JQuery POST. Однако мои HTML-символы из этого DIV преобразуются в специальные символы. Пример: & gt; & quot; станет "& amp; gt;" и когда это происходит, мои данные POST ограничиваются тем, где появляется первый спецсимвол, потому что я делаю свой ajax POST следующим образом:

var data = 'id='+ currid +'&html='+ div_html;

    $.ajax({
          type: "POST",
          url: "file.php",
          data: data,
    .......................
    .......................

Использование этого кода не подходит, потому что div_html содержит другие & quot; & quot; символы, поэтому он будет рассматриваться как другой параметр POST для отправки.

Есть обходные пути?

Еще раз спасибо.

Ваш Ответ

4   ответа
45

Что касается вас, когда вы «вытащили» содержимое с чем-то вроде.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, До тех пор, пока вы не передадите его синтаксическому анализатору, в этом нет никакой магии, это строка, как и любая другая строка.
Там нет ничего, что мешает вам использовать.сообщение() отправить эту строку обратно на сервер.

edit: Не передавайте строку в качестве параметраdata в .post (), но объект, как

var data = {
  id: currid,
  html: div_html
};
$.post("http://...", data, ...);

jquery будет обрабатывать кодирование параметров.
Если вы (по какой-либо причине) хотите сохранить свою строку, вы должны закодировать значения примерно так:побег().

var data = 'id='+ escape(currid) +'&html='+ escape(div_html);
Оригинальный ответ расширен
Спасибо ! Работает отлично. Manny Calavera
Оригинальный вопрос отредактирован. Manny Calavera
Просто чтобы еще раз проверить мое понимание: JQuery достаточно умен, чтобы справиться с кодировкой для вас, если вы не возитесь с ней. Это звучит правильно?
Ты лучший, который отлично сработал для меня.
1

Я не понимаю, почему вы не можете отправлять html-контент по почте.

если у вас возникнут какие-либо проблемы, возможно, вы могли бы использовать какое-то кодирование / декодирование, но я не вижу, чтобы вы это сделали.

Оригинальный вопрос отредактирован. Manny Calavera
1

Если вы хотите отправить произвольный объем данных на ваш сервер, POST - единственный надежный способ сделать это. GET также возможен, но клиенты и серверы допускают только ограниченную длину URL (что-то вроде 2048 символов).

Оригинальный вопрос отредактирован. Manny Calavera
0

jQuery.post(post_url,{ content: "John" } )
	.done(function( data ) {
		 
		 
	});
 

Я использовал технику, о которой вы ответили выше, она отлично работает, но моя проблема в том, что мне нужно сгенерировать PDF-файл, используя Джон в качестве текста. Я был в состоянии повторить переданные данные. но становится пустым при генерации pdf uisng ниже содержимого ples check

ob_start();
			 			 
			include_once(JPATH_SITE .'/components/com_gaevents/pdfgenerator.php');
			$content = ob_get_clean();
			
		
		
			 $test = $_SESSION['content'] ;
	 
			require_once(JPATH_SITE.'/html2pdf/html2pdf.class.php');
            $html2pdf = new HTML2PDF('P', 'A4', 'en', true, 'UTF-8',0 );			
				$html2pdf->setDefaultFont('Arial');
				$html2pdf->WriteHTML($test);

Похожие вопросы