Это:
data: user,
должно быть
data: {user: user},
Потому что вы ищете переменную POST с именем "user" и используете ее значение. jQuery примет литерал объекта и сериализует его в данные POST, используя имена свойств в качестве ключей и значения свойств в качестве значений. Хорошая вещь об использовании объекта (литерального или иного) состоит в том, что тогда jQuery обрабатывает кодирование значений для вас. Вы можете использовать строку (data: "user=" + user
), но тогда вам придется позаботиться о том, чтобы самостоятельно выполнить encodeURIComponent
часть для строковых параметров (нет необходимости в этом числовом).
Вы также можете сделать все это в одном, без переменной user
на стороне клиента:
$('#savenew').click(function(){
$.ajax({
type: "POST",
url: "actions/sub.php",
data: {user: <?php echo $user?>},
success: function(){
$('#savenew').html('<span>Unsubscribe</span>');
$(this).removeAttr('id');
$(this).attr('id', 'clean');
}
});
});
... хотя наличие переменной user
на стороне клиента безвредно, и, конечно, если вы хотите использовать ее более чем в одном месте ...