Вам нужно отменить отправку формы по умолчанию, вернув false
внутри кнопки onclick
handler:
<input type="submit" onclick="postForm(); return false;" />
При этом я бы предложил вам лучшее решение. Используйте плагин jquery.form , который позволяет вам изменить форму HTML. Таким образом, большая часть дублирования в вашем коде может быть упрощена:
Html.BeginForm("JSONRequest", "Home", FormMethod.Post, new { id = "myForm" });
Html.TextBox("mazhar")
<input type="submit" value="OK" />
Html.EndForm();
И в JavaScript:
$(function() {
$('#myForm').ajaxForm({
success: function(result) {
window.alert(result.name);
},
error : function() {
window.alert('error');
}
});
});
Таким образом, вам больше не нужно указывать URL, метод, вручную сериализовать поля формы и т. Д. Вам также не нужно загрязнять вашу HTML-разметку функциями javascript. Это ненавязчивый JavaScript. Еще одним преимуществом этого подхода является то, что теперь вы сможете выводить этот javascript в отдельный статический файл .js, так как он больше не зависит от кода на стороне сервера (<%= Url.Action("JSONRequest","Home") %>
), и вы получите выгоду от уменьшения пропускной способности и кэширования статических ресурсов. .