2013-07-02 2 views
2

Firebug говорит, что запрос был отправлен на сервер с 200OK, но массив PHP $ _POST пуст.JQuery: Ajax POST-вызов не отправляет данные

var pass_data = { 
    'email':$("#email").val(), 
    'verifyemail':$("#verifyemail").val(), 
    'password':$("#password").val(), 
    'confirm_password':$("#vPassword").val(), 
} 

$.ajax({ 
    type: "POST", 
    url: 'localhost/pages/register', 
    dataType: 'json', 
    data: pass_data, 

}); 

заголовков запроса:

Accept application/json, text/javascript, */*; q=0.01 
Accept-Encoding gzip, deflate 
Accept-Language en-US,en;q=0.5 
Content-Length 86 
Content-Type application/x-www-form-urlencoded; charset=UTF-8 
Host localhost 
Referer http://localhost/ 
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0 
X-Requested-With XMLHttpRequest 

Любые идеи?

+1

Как вы пытаетесь получить доступ к данным на PHP? – tymeJV

+0

var_dump ($ _ POST) – vlcik

+0

** Если запрос GET работает, но POST не работает **, это чаще всего проблема с перенаправлением. Тем не менее, хотя запрос первоначально обратился к первому URL-адресу и перенаправлен на другой URL-адрес, тогда все данные POST не были отправлены по другому URL-адресу. Поэтому все данные теряются. Проверьте этот ответ: http://stackoverflow.com/a/37217199/996010 –

ответ

2

Обычно я избегаю использовать значения возвращаемого значения jQuery непосредственно в объявлениях переменных. Цитирование может сделать разбор непоследовательным. Предложите:

var pass_data = $('form').serialize(); 

Позвольте jQuery сделать тяжелый подъем.

P.S. Просто заметили, что ваше объявление переменной для pass_data имеет конечную запятую после последнего элемента. Это неверно. Такая же проблема с объектом, который вы передаете в $ .ajax. Избавьтесь от конечной запятой на последней паре.

1
var pass_data = { 
    'email':$("#email").val(), 
    'verifyemail':$("#verifyemail").val(), 
    'password':$("#password").val(), 
    'confirm_password':$("#vPassword").val() 
}; 

$.ajax({ 
    type: "POST", 
    url: 'localhost/pages/register.php', 
    dataType: 'json', 
    data: {posted_data: pass_data} 
}); 

Вы должны смотреть на $ _POST [ ''] posted_data на register.php.

+0

Кроме того, удалите посторонние запятые и добавьте полуточку, как показано в моем коде выше. – DevlshOne

+0

еще одна проблема – vlcik

+0

Можете ли вы разместить содержимое register.php? – DevlshOne

0

Извините, я не очень хорошо говорю по-английски.

Но попробуйте написать console.log(pass_data), чтобы убедиться, что вы получите val.

+0

Да, это работает. Вывод: 'Object {confirm_password =" pass ", agree = 0, profile_name =" ", more ...}' – vlcik

+0

Для атрибута url вы уверены, что вам нужно написать полный путь? Что-то вроде: 'url: pages/register' – Kev

+0

Еще одна проблема – vlcik

-1

JQuery может показать вам фактические данные, отправленные, чтобы вы могли подтвердить, что данные на самом деле там.

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