Код, который вы показываете, хорош.Вы должны предоставить HTML-часть, чтобы быть уверенным.
Одна из причин, по которой вы могли бы получить такой результат, заключается в том, чтобы иметь такой код:
<form action='/' method="post">
<button id="clickMe" type="submit">submit</button>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#clickMe').on('click', function() {
var data = {};
data.name = "kevin";
$.ajax({
type: "POST",
data: JSON.stringify(data),
contentType: 'application/json'
});
});
});
</script>
Здесь запрос AJAX будетотправлено (с data.name = "kevin"
), тогда форма также будет отправлена (без свойства data.name, поэтому undefined
value).
Решение в этом случае состоит в том, чтобы предотвратить отправку формы с event.preventDefault();
или return false;
:
$(document).ready(function() {
$('#clickMe').on('click', function(e) {
e.preventDefault();
var data = {};
data.name = "kevin";
$.ajax({
type: "POST",
data: JSON.stringify(data),
contentType: 'application/json'
});
// OR
// return false;
});
});
Вы также можете просто удалить часть формы и просто нажать кнопку: <button id="clickMe">click here</button>
.Здесь форма не будет отправлена, поэтому нет необходимости event.preventDefault();
или return false;
.
Вы также можете просто использовать форму, добавив ввод и удалив свою часть JS, но это будет просто классическаяотправка формы.