2010-07-13 2 views
1

Эта работа ajax, в которой я работаю, не делает то, что я говорю ей.Проблема Ajax, переменные не получаются отправлены

На стороне клиента JS я предупреждаю обо всем, что отправлено через запрос, а на стороне PHP я распечатываю все, что он получает. Эти два списка переменных не совпадают. Я не понимаю, почему.

Вот как я посылаю данные (через пост):

xhr.onreadystatechange = response; 
xhr.open("POST", self.url, true); 
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xhr.setRequestHeader("Content-length", data.length); 
xhr.setRequestHeader("Connection", "close"); 
xhr.send(data); 
if(self.ALERT_SENT_DATA) 
{ 
    alert("sending this to " + self.url + ":\n" + data);   
} 

и предупреждение выглядит следующим образом: (все равно нулю за исключением типа, permissionid и разрешение)

sending this to workers/permission.php: 
type=save&permissionid=2&permission=1&info=0&users=0&pages=0&menus=0 
&toolmanager=0&contributors=0&currentissue=0&backup=0&features=0&issues=0&ast=0 
&research=0&sports=0&milestones=0&sportslist=0&crusher=0&permission=0&info=0 
&users=0&pages=0&menus=0&toolmanager=0&contributors=0&currentissue=0&backup=0 
&features=0&issues=0&ast=0&research=0&sports=0&milestones=0&sportslist=0&crusher=0 

На стороне PHP я всегда могу получить тип переменных и разрешать. Эти 2 всегда работают, и я не знаю, почему. Это не что-то особенное в этих двух, за исключением того, что они первыми. Однако все остальное после получения разрешения ВСЕГДА достигает нуля. Независимо от того, что javascript подсказывает мне, что он отправлен, на PHP все приходит на ноль.

Итак, как я могу это понять и выяснить, где моя проблема?

+0

Как «данные» быть установлен? Я думаю, что он не наполняется должным образом –

+0

Я скопировал и вставлял текст предупреждения в поле выше. Он может читать только первые 2 значения для данных и ничего больше. – asdasd

ответ

1
&permission=1&in.....her=0&permission=0 

Последний один выигрывает в $ _POST, $ _POST [ 'разрешение'] будет 0.

Вы можете предотвратить его с добавлением [] после имени (& разрешение [] = 1 & разрешения [ ] = 0), который даст вам массив в $ _POST ['permission'] с этими 2 значениями вместо строки.

Если вы не можете контролировать именование, вам придется разобрать ввод самостоятельно вручную (вы можете получить строку по $input = file_get_contents('php://input');

+0

святое дерьмо вы совершенно правы. Theres так много значений я даже не заметил, что он отправляет все в два раза. Вот почему все приходит в ноль. Теперь я просто должен понять, почему его отправка все дважды спасибо. – asdasd

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