ฉันต้องการส่งแบบฟอร์มโดยใช้ jQuery ใครสามารถให้รหัสตัวอย่างหรือลิงค์ตัวอย่าง?
ฉันต้องการส่งแบบฟอร์มโดยใช้ jQuery ใครสามารถให้รหัสตัวอย่างหรือลิงค์ตัวอย่าง?
คำตอบ:
ขึ้นอยู่กับว่าคุณส่งแบบฟอร์มปกติหรือผ่านการโทร AJAX คุณสามารถค้นหาข้อมูลมากมายได้ที่jquery.comรวมถึงเอกสารประกอบพร้อมตัวอย่าง สำหรับการส่งแบบฟอร์มตามปกติให้ตรวจสอบsubmit()
วิธีการไปที่ไซต์นั้น สำหรับAJAXมีความเป็นไปได้ที่แตกต่างกันมากมายแม้ว่าคุณอาจต้องการใช้วิธีการajax()
หรือpost()
วิธีการ โปรดทราบว่าpost()
นี่เป็นวิธีที่สะดวกในการเรียกใช้ajax()
เมธอดด้วยอินเตอร์เฟสที่เรียบง่ายและ จำกัด
ทรัพยากรที่สำคัญอย่างหนึ่งที่ฉันใช้ทุกวันที่คุณควรคั่นหน้าไว้คือjQuery ทำงานอย่างไรอย่างไร มีแบบฝึกหัดเกี่ยวกับการใช้ jQuery และการนำทางด้านซ้ายให้การเข้าถึงเอกสารทั้งหมด
ตัวอย่าง:
ปกติ
$('form#myForm').submit();
AJAX
$('input#submitButton').click( function() {
$.post( 'some-url', $('form#myForm').serialize(), function(data) {
// ... do something with response from server
},
'json' // I expect a JSON response
);
});
$('input#submitButton').click( function() {
$.ajax({
url: 'some-url',
type: 'post',
dataType: 'json',
data: $('form#myForm').serialize(),
success: function(data) {
// ... do something with the data...
}
});
});
โปรดทราบว่าajax()
และpost()
วิธีการข้างต้นเทียบเท่ากัน มีพารามิเตอร์เพิ่มเติมที่คุณสามารถเพิ่มลงในajax()
คำขอเพื่อจัดการข้อผิดพลาด ฯลฯ
$('form#MyForm').serialize() + '&newData=' + newData + '&moreData=' + moreData
. หมายเหตุ: หลังสองอาจจะต้องมีการเข้ารหัส URL encodeURIComponent()
ใช้ หรือ - คุณสามารถเปลี่ยนเพื่อใช้การเข้ารหัส JSON ที่ปลายทั้งสองด้าน แต่จากนั้นคุณจะต้องใส่ข้อมูลฟอร์มลงในโครงสร้างข้อมูล JavaScript ด้วยข้อมูลเพิ่มเติมของคุณและทำให้เป็นอันดับ ในกรณีนี้คุณอาจใช้serializeArray
แบบฟอร์มและรวมข้อมูลอื่นของคุณเข้าด้วย
$("#formId").submit()
คุณจะต้องใช้
โดยทั่วไปคุณจะเรียกสิ่งนี้จากภายในฟังก์ชั่น
ตัวอย่างเช่น:
<input type='button' value='Submit form' onClick='submitDetailsForm()' />
<script language="javascript" type="text/javascript">
function submitDetailsForm() {
$("#formId").submit();
}
</script>
คุณจะได้รับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ในเว็บไซต์ Jquery
เมื่อคุณมีแบบฟอร์มที่มีอยู่ตอนนี้ควรทำงานกับ jquery - ajax / โพสต์ตอนนี้คุณสามารถ:
ทำสิ่งที่คุณเอง
$(function() {
//hang on event of form with id=myform
$("#myform").submit(function(e) {
//prevent Default functionality
e.preventDefault();
//get the action-url of the form
var actionurl = e.currentTarget.action;
//do your own request an handle the results
$.ajax({
url: actionurl,
type: 'post',
dataType: 'application/json',
data: $("#myform").serialize(),
success: function(data) {
... do something with the data...
}
});
});
});
โปรดทราบว่าเพื่อให้serialize()
ฟังก์ชันทำงานในตัวอย่างด้านบนองค์ประกอบแบบฟอร์มทั้งหมดจะต้องมีการname
กำหนดแอตทริบิวต์
ตัวอย่างของแบบฟอร์ม:
<form id="myform" method="post" action="http://example.com/do_recieve_request">
<input type="text" size="20" value="default value" name="my_input_field">
..
.
</form>
@PtF - ข้อมูลถูกส่งโดยใช้ POST ในตัวอย่างนี้ดังนั้นหมายความว่าคุณสามารถเข้าถึงข้อมูลของคุณผ่านทาง
$_POST['dataproperty1']
โดยที่ dataproperty1 คือ "variable-name" ใน json ของคุณ
ตัวอย่างไวยากรณ์ที่นี่ถ้าคุณใช้ CodeIgniter:
$pdata = $this->input->post();
$prop1 = $pdata['prop1'];
$prop1 = $pdata['prop2'];
ใน jQuery ฉันต้องการสิ่งต่อไปนี้:
$("#form-id").submit()
แต่จากนั้นอีกครั้งคุณไม่จำเป็นต้องใช้ jQuery เพื่อทำงานดังกล่าวเพียงแค่ใช้ JavaScript ปกติ:
document.getElementById("form-id").submit()
จากคู่มือ: jQuery Doc
$("form:first").submit();
สำหรับข้อมูล
ถ้าใครใช้
$('#formId').submit();
อย่าทำอะไรแบบนี้
<button name = "submit">
ใช้เวลาหลายชั่วโมงกว่าจะพบฉันว่า submit () ไม่ทำงานเช่นนี้
"sumit"
ทำให้ไม่ชัดเจนหากพิมพ์ผิดโดยไม่ตั้งใจหรือมีความเกี่ยวข้องกับปัญหา คุณหมายความว่าปุ่มชื่อ"submit"
messes up jquery form submit () ใช่ไหม หรือคุณหมายถึงปัญหาคือคุณให้ชื่อปุ่มส่งแทนมาตรฐานtype="submit"
หรือไม่
ใช้มันเพื่อส่งแบบฟอร์มของคุณโดยใช้ jquery นี่คือลิงค์http://api.jquery.com/submit/
<form id="form" method="post" action="#">
<input type="text" id="input">
<input type="button" id="button" value="Submit">
</form>
<script type="text/javascript">
$(document).ready(function () {
$( "#button" ).click(function() {
$( "#form" ).submit();
});
});
</script>
button
ลงในปุ่มของคุณเพื่อให้แน่ใจว่าแบบฟอร์มจะไม่ส่ง (เนื่องจากเบราว์เซอร์บางตัวจะไม่ใช้ปุ่มที่ไม่มีประเภทเหมือนกัน)
สิ่งนี้จะส่งแบบฟอร์มที่มีตัวโหลดล่วงหน้า:
var a=$('#yourform').serialize();
$.ajax({
type:'post',
url:'receiver url',
data:a,
beforeSend:function(){
launchpreloader();
},
complete:function(){
stopPreloader();
},
success:function(result){
alert(result);
}
});
ฉันมีเคล็ดลับบางประการในการสร้างแบบฟอร์มการโพสต์ข้อมูลด้วยวิธีการสุ่มhttp://www.jackart4.com/article.html
$("form:first").submit();
ดูเหตุการณ์ / ส่ง
โปรดทราบว่าถ้าคุณติดตั้งฟังเหตุการณ์ส่งสำหรับแบบฟอร์มของคุณโทร Innner เพื่อส่ง ()
jQuery('#<form-id>').submit( function(e){
e.preventDefault();
// maybe some validation in here
if ( <form-is-valid> ) jQuery('#<form-id>').submit();
});
จะไม่ทำงานเนื่องจากพยายามติดตั้งฟังเหตุการณ์ใหม่สำหรับเหตุการณ์ส่งของฟอร์มนี้ (ซึ่งล้มเหลว) ดังนั้นคุณต้อง acces องค์ประกอบ HTML ตัวเอง (แกะจาก jQquery) และโทรส่ง () ในองค์ประกอบนี้โดยตรง:
jQuery('#<form-id>').submit( function(e){
e.preventDefault();
// note the [0] array access:
if ( <form-is-valid> ) jQuery('#<form-id>')[0].submit();
});
คุณยังสามารถใช้ปลั๊กอินแบบฟอร์ม jquery เพื่อส่งโดยใช้ ajax เช่นกัน:
jQuery("a[id=atag]").click( function(){
jQuery('#form-id').submit();
**OR**
jQuery(this).parents("#form-id").submit();
});
โปรดทราบว่าใน Internet Explorer มีปัญหากับฟอร์มที่สร้างขึ้นแบบไดนามิก แบบฟอร์มที่สร้างขึ้นเช่นนี้จะไม่ส่งใน IE (9):
var form = $('<form method="post" action="/test/Delete/">' +
'<input type="hidden" name="id" value="' + myid + '"></form>');
$(form).submit();
เพื่อให้มันทำงานใน IE สร้างองค์ประกอบแบบฟอร์มและแนบก่อนที่จะส่งเช่น:
var form = document.createElement("form");
$(form).attr("action", "/test/Delete")
.attr("method", "post");
$(form).html('<input type="hidden" name="id" value="' + myid + '" />');
document.body.appendChild(form);
$(form).submit();
document.body.removeChild(form);
การสร้างแบบฟอร์มในตัวอย่างที่ 1 จากนั้นการเชื่อมต่อจะไม่ทำงาน - ใน IE9 จะเกิดข้อผิดพลาด JScript DOM Exception: HIERARCHY_REQUEST_ERR (3)
อุปกรณ์ประกอบฉากเพื่อ Tommy W @ https://stackoverflow.com/a/6694054/694325
การแก้ไขปัญหาที่ทำให้คุณต้องรู้ ID ของแบบฟอร์ม
ใช้รหัสนี้เพื่อส่งแบบฟอร์มโดยไม่จำเป็นต้องทราบ ID:
function handleForm(field) {
$(field).closest("form").submit();
}
ตัวอย่างเช่นหากคุณต้องการจัดการเหตุการณ์คลิกสำหรับปุ่มคุณสามารถใช้
$("#buttonID").click(function() {
handleForm(this);
});
หากปุ่มอยู่ระหว่างแท็กแบบฟอร์มฉันชอบเวอร์ชั่นนี้:
$('.my-button').click(function (event) {
var $target = $( event.target );
$target.closest("form").submit();
});
คุณสามารถใช้มันแบบนี้:
$('#formId').submit();
หรือ
document.formName.submit();
เคล็ดลับ IE สำหรับรูปแบบไดนามิก:
$('#someform').find('input,select,textarea').serialize();
แนวทางของฉันแตกต่างกันเล็กน้อยเปลี่ยนปุ่มเป็นปุ่มส่งแล้วคลิก
$("#submit").click(function(event) {
$(this).attr('type','submit');
$(this).click();
});
function form_submit(form_id,filename){
$.post(filename,$("#"+form_id).serialize(), function(data){
alert(data);
});
}
มันจะโพสต์ข้อมูลแบบฟอร์มในชื่อไฟล์ที่คุณกำหนดผ่าน AJAX
ฉันแนะนำโซลูชันทั่วไปดังนั้นคุณไม่จำเป็นต้องเพิ่มรหัสสำหรับทุกรูปแบบ ใช้ปลั๊กอินแบบฟอร์ม jquery (http://jquery.malsup.com/form/) และเพิ่มรหัสนี้
$(function(){
$('form.ajax_submit').submit(function() {
$(this).ajaxSubmit();
//validation and other stuff
return false;
});
});
คุณสามารถทำได้เช่นนี้
$('#myform').bind('submit', function(){ ... });
ฉันได้ใช้สิ่งต่อไปนี้เพื่อส่งแบบฟอร์ม (โดยไม่ส่งจริง ๆ ) ผ่าน Ajax:
jQuery.get("process_form.php"+$("#form_id").serialize(), {},
function() {
alert("Okay!");
});
$.post
แยกแยะและสร้างแบบฟอร์มใหม่เพื่อสร้างข้อมูลที่จะส่ง ขอบคุณ!