Il mio $ .ajax() non sta serializzando il nome e il valore del pulsante.Ajax post serialize() non include il nome e il valore del pulsante
Ho una forma molto semplice. Ha un pulsante e una casella di testo.
<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>
quando chiamo $(this).serialize()
, la casella di testo è incluso nella stringa, ma non il pulsante.
Debug.Log($(this).attr('id')); //== 'myform'
Debug.Log("data: " + $(this).serialize()); //== data: txtBlah=hello
Ho notato durante la ricerca che con altre domande il motivo principale era un elemento nome mancante sul pulsante. Ho un elemento del nome.
Ho anche provato a creare un semplice <input type="submit" name="mysubmit" />
che non ha modificato nulla.
soluzione che ho usato
var buttonSubmit = (function (e)
{
e.preventDefault();
var form = $(this).closest('form');
form.attr('data-button-name', $(this).attr('value'));
form.closest('form').submit();
});
È anche possibile lasciare che la bolla evento click del pulsante fino alla forma, e quindi utilizzare event.srcElement per capire il pulsante che ha causato la presentazione. – slashingweapon
Grazie per il tuo aiuto. La mia soluzione è stata ispirata dalla tua. Ho aggiornato la mia domanda originale. –