各位好:
請問以下的程式碼部份,是按下id名為btn的按鈕後,觸發ajax動作,
那請問該如何再將data: 區塊的部份 jquery化?不然若html表單有100個欄位,不就要填入100個.val()資料....
JQUERY部份:
$('#btn').click(function (){
$.ajax({
url: 'ajax_output.php',
cache: false,
dataType: 'html',
type:'GET',
data: {
//要 ''jquery''化的地方,可以在去蕪存菁的方式抓出欄位嗎?而不用日後若是有擴充表單欄位,則要一筆一筆手動列入欄位資訊.
name: $('#name').val(),
sex: $('#sex').val(),
username: $('#username').val()
},
error: function(xhr) {
alert('Ajax request 發生錯誤');
},
success: function(response) {
$('#send_data').html(response);
}
});
});
HTML表單部份
<div id="send_data">
<input type="text" id="name"> <br>
<input type="text" id="sex"> <br>
<input type="text" id="username"> <br>
↑目前有3個欄位,所以js程式碼中的data:區塊要放入3筆要送出的~
<input type="button" value="send" id="btn">
<div id="msg">loading...</div> </div>
</div>
</div>
<script type="text/javascript"> $(document).ready(function () { //$('#btn').click(function (){ $("#input_form").submit(function(){ var querystring = $(this).serialize(); alert(querystring); $.ajax({ url: 'ajax_output.php', cache: false, dataType: 'html', type:'GET', //data: { // name: $('#name').val(), // sex: $('#sex').val() //}, data: querystring }); }); </script>
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function () { $("#mySubmitButton").click(function(event){ event.preventDefault(); var tmpStr1 = $("#myForm").serialize(); alert('serialize處理完成:\n\n'+tmpStr1); var tmpStr2=decodeURIComponent($("#myForm").serialize()); alert('serialize&&decodeURIComponent處理完成:\n\n'+tmpStr2); //$.post("nextstep.php", { formdata: tmpStr2 }, function(data) { alert(data); }); }); }); </script> </head> <body> <form id='myForm'> A:<input type="text" name="name" value="王小明" /><br /> B:<input type="text" name="sex" value="男" /><br /> C:<input type="text" name="username" value="ithome" /><br /> <button id='mySubmitButton'>確定送出</button> </form> </body> </html>
<pre class="c" name="code">$(form的id).serialize(); // 這樣子就可以了,記得form裡面的所有欄位要加上name
如果input type都是text,且用id當做name:
<pre class="c" name="code">
var data = {};
$.each($('#send_data input[type=text]'), function () {
data[this.id] = this.value;
});