2013-07-24 2 views
0

Я пытаюсь передать несколько больших наборов данных на PHP через AJAX POST. Мои данные усекаются, но я не понимаю, почему.Данные AJAX POST усечены

var greeting  = tinyMCE.get("greeting").getContent(); 
... 
var content = "subject="   +subject+ 
       "&greeting="  +greeting+ 
       "&results="   +results+ 
       "&upcoming="  +upcoming+ 
       "&thisweek="  +thisweek+ 
       "&signoff="   +signoff; 

console.log(content); //<--see below for this output 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("POST", "scripts/send_email.php", true); 
xmlhttp.setRequestHeader("content-type", "application/x-www-form-urlencoded"); 
xmlhttp.send(content); 

send_email.php

$greeting  = $_POST['greeting']; 
echo $greeting; 
die(); 

Это консольный вывод для моего переменного контента (обратите внимание, что если вы видите форматирование, вывод на консоль HTML-тег, но я не знаю, как отобразить . тег здесь)

> subject=test&greeting=<p class="p1"><strong>Hello all,</strong></p> <p 
> class="p2">&nbsp;</p> <p class="p1">&nbsp;</p> <p class="p3">This is a 
> test. I am just typing some random stuff to verify that all of my data 
> is getting passed correctly over to PHP. However, it seems that this 
> data is being truncated for reasons that I cannot explain. Why would 
> this happen. How can I get all of this data to pass correctly? It 
> doesn&rsquo;t make any sense to me as I am using an AJAX POST call and 
> not a GET call, so my data length should not be arbitrarily 
> limited.</p>&results=<p><strong><span style="text-decoration: 
> underline;">RESULTS</span></strong><br /><br /><br 
> /></p>&upcoming=<p><strong><span style="text-decoration: 
> underline;">UPCOMING EVENTS</span></strong><br /><br /><br 
> /></p>&thisweek=<p><strong><span style="text-decoration: 
> underline;">THIS WEEK</span></strong><br /><br /><br 
> /></p>&signoff=<p>See you out there.</p>" 

Но, мои PHP эхо заявление выводит только это:

Hello all, 

, который явно усекает остальную часть данных, которые я пытаюсь выполнить. Зачем? Что я делаю не так? Спасибо!

+4

Вы кодируете URL-адреса данных, которые вы помещаете в свой орган POST? Он должен быть закодирован в URL. – thatidiotguy

+1

encodeURIComponent (приветствие) – Orangepill

ответ

3

Вы должны кодировать данные, которые вы положили в параметрах

var content = "subject=" + encodeURIComponent(subject) + 

т.д.

+0

Спасибо, что было. Это мое первое использование AJAX POST, поэтому я понятия не имел об этом. Большое спасибо! – Alex

0

Вы просто эхо приветствия.

попробовать это:

echo implode($_POST); 
1

Вы посылаете с типом контента "... URL-закодирован" во время передачи данных не в кодировке URL. Вам необходимо правильно закодировать свои данные перед отправкой (encodeURIComponent и т. Д.)

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