2013-02-27 3 views
0

У меня есть форма «создать пользователя», которая должна проверить, существует ли имя пользователя. Для этого я сделал OnClick функцию на кнопку запуска этого сценария:Jquery post single variable to PHP

$.ajax({ 
type: \"POST\", 
dataType: \"json\", 
url: \"test.php\", 
data: $('input[name=Username]').val(), 
contentType: \"application/json; charset=utf-8\", 
success: function(data){ 
alert('Items added'); 
}, 
error: function(e){ 
console.log(e.message); 
} 
}); 

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

+3

Откуда эти «\» '? –

+0

Удалите код из события onclick, создайте функцию и удалите escape-файлы из". – Ghigo

+0

Записывается ли сообщение об ошибке на консоль? – Jrod

ответ

2

Ваш data ключ нужен value, который является объектом, например, так:

data: {username: $('input[name=Username]').val())}, 

Таким образом, значение POST username будет создана.

1

вам необходимо присвоить переменный элемент, который можно ссылаться в $_POST вызова:

$.ajax({ 
    type: "POST", 
    url: "test.php", 
    data: {user:$('input[name=Username]').val()}, 
    success: function(data){ 
     alert('Items added'); 
    }, 
    error: function(e){ 
     console.log(e.message); 
    } 
}); 

Тогда в test.php, просто получить $_POST['user'].

Редактировать - я удалил contentType (спасибо Rocket). Я также удалил DATATYPE, потому что вам не нужно делать, если вы правильно установить заголовок на test.php:

header('Content-type: application/json'); 
+0

Потерять 'contentType', здесь это неверно. –

+0

удален' contentType ', это было просто из копии/вставки. Также удалил' dataType: json' и сообщил, как правильно установить заголовок test.php. – PlantTheIdea

+0

Сохранение 'dataType: 'json'' в порядке, на всякий случай. –

2
  1. Не избежать случайных битов JS. Избавьтесь от \ s
  2. Гораздо проще иметь дело с представленными данными, если вы форматируете с использованием стандартного типа mime типа, а затем просто отправляете одну необработанную строку. data: { keyName: $('input[name=Username]').val() }
  3. Вы не отправляете текст JSON. Избавиться contentType: etc etc. (Оставляя это в может заставить PHP идти «Это не форма данных, я не могу заполнить $_POST с ней»). Пусть jQuery определяет тип контента, который он отправляет.

Затем вы можете получить доступ к $_POST['keyName'] в своем PHP.