2010-08-06 4 views
1

Я отправляю запрос $ .post для php с помощью jQuery. Код JQuery выглядит следующим образом:

$('form').submit(function() { 

    username = $('input[name="username"]').val(); 
    alert(username); 
    $.post('/ajax/new_user.php', {username:username}, function(data) { 
     alert(data); 
    }); 


}); 

В PHP, я просто пытаюсь сделать это сейчас:

<?php 

echo $_POST['username']; 

?> 

первый сигнал тревоги в JQuery работал и печатает правильное значение, однако alert(data) всегда оповещает и пустую строку ("").

Путь к файлу верен. Я делаю много других запросов AJAX на моем сайте, которые работают отлично, поэтому я не уверен, что делает его таким разным. Любая помощь очень ценится!

+0

Не могли бы вы проверить запрос XHR в Firebug или отладчике Chrome и узнать, какой ответ на вашем сервере? – mattbasta

+0

Кроме того, попробуйте эхо «hello world» в PHP, чтобы узнать, есть ли проблема с получением параметра $ _POST. – jmar777

+0

Вы отредактировали ** правильный ** 'новый_user.php' файл и сохранили ли вы его? – BalusC

ответ

3

So. Ответ был добавлен

return false; 

в конце представления().

+0

Nice catch! Не могу поверить, что я не видел чего-то столь очевидного. Q: – Kranu

1

не

$.post('/ajax/new_user.php', {username:username}, function(data) { 
     alert(data); 
    }); 

должен быть

$.post('/ajax/new_user.php', {"username":username}, function(data) { 
     alert(data); 
    }); 
+0

Ничего не изменил, но спасибо за предложение! – williamg

+1

Только для записи это довольно распространенное заблуждение. Первый пример - вполне допустимый литерал объекта, который можно использовать в любом месте вашего кода на стороне клиента. Однако это не справедливый JSON (это то, что вы исправили во втором примере). Наличие действительного JSON в первую очередь важно, когда вы передаете его на ответ, который будет потребляться/анализироваться как служба JSON (или аналогичная) ... – jmar777

1

Попробуйте заменить

{username:username} 

с

{'username':username} 

Если это не работает, замените содержимое на файле PHP с:

<?php 

print_r($_POST); 

?> 

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

+0

Нет, но спасибо за предложение! – williamg

+0

Каков вывод print_r? – Kranu

+0

print_r() просто делает то же самое, и когда я перехожу непосредственно к файлу PHP, он показывает Array() – williamg

0

Комментарий Pixeline решил мою проблему, все, что я должен был сделать, это return false в конце отправки.