My $.ajax() не сериализует имя и значение кнопки.
У меня очень простая форма. Он имеет кнопку и текстовое поле.
<form action="/MyController/MyAction" data-ajax-method="post"
data-ajax-mode="replace" data-ajax-target="#mypartial" id="myform"
method="post">
<button type="submit" class="positive" name="button" value="click1">
<img src="/Id/Images/Icons/16/enabled/tick.png" title="click1">
Click
</button>
<input id="txtBlah" name="txtBlah" type="text" value="hello">
</div>
</form>
Когда я вызываю $(this).serialize()
, текстовое поле включено в строку, но не кнопку.
Debug.Log($(this).attr('id')); //== 'myform'
Debug.Log("data: " + $(this).serialize()); //== data: txtBlah=hello
В ходе исследования я отметил, что с другими вопросами основная причина заключалась в отсутствии элемента имени на кнопке. У меня есть элемент name.
Я также пробовал сделать очень простой <input type="submit" name="mysubmit" />
, который ничего не менял.
решение, которое я использовал
var buttonSubmit = (function (e)
{
e.preventDefault();
var form = $(this).closest('form');
form.attr('data-button-name', $(this).attr('value'));
form.closest('form').submit();
});