2012-05-01 27 views
2

我沒有代碼可以讓你看到這裏,但我們假設我有一個包含日期,城市和地址的3個HIDDEN字段。 我也有一個選擇與3個選項(比方說蘋果,微軟和谷歌)。Jquery onchange選擇將表格提交給PHP

我想要的是,當用戶將選擇更改爲不同的選項時,jQuery應將選擇框+ 3隱藏字段的值發送到PHP頁面,例如proces.php。 Proces.php處理mysql_query等,它不會返回任何東西。

任何人都可以告訴我這是怎麼完成的?我不希望任何人爲我寫一個完整的腳本,因爲我沒有提供任何html代碼,但只是大綱,或者可能是指向教程的鏈接。

+1

退房http://api.jquery.com/jQuery.ajax/爲Ajax請求 –

回答

7

所有形式的首先應該是這個樣子:

<form action="process.php" method="post" id="myForm"> 
    <select name="site" id="site"> 
     <option>Apple</option> 
     <option>Google</option> 
     <option>Microsoft</option> 
    </select> 
    <input type="hidden" name="date" value="01/05/2012" /> 
    <input type="hidden" name="city" value="London" /> 
    <input type="hidden" name="address" value="[... address ...]" /> 
</form> 

然後通過AJAX提交您將使用serialize()方法收集表單數據:

$("#site").on("change", function() { 
    var $form = $("#myForm"); 
    var method = $form.attr("method") ? $form.attr("method").toUpperCase() : "GET"; 
    $.ajax({ 
     url: $form.attr("action"), 
     data: $form.serialize(), 
     type: method, 
     success: function() { 
      // do stuff with the result, if you want to 
     } 
    }); 
}); 

另外,如果你不不想使用AJAX,只需提交標準表格,就可以觸發表單提交,如下所示:

$("#site").on("change", function() { 
    $("#myForm").submit(); 
}); 
+0

謝謝你的這個答案,這似乎工作,但它把我送到process.php,而我想process.php在後臺自己運行,並且用戶不應該被引導到process.php,這是可能的嗎? – Student

+0

是的 - 這就是我的第一個例子(使用'.ajax()')。 –

+0

完美!正是我想要的。 – Student

1

,如果你想使用jQuery你可以使用jQuery表單插件<
http://jquery.malsup.com/form/ 有啥基本上ü可以做的是使用發送表單

$(document).ready(function(){ 
$('form selector').ajaxForm(opts); 
//u can define the opt urself itz easy look at the link 
$("selects selector").change(function(){ 
$(form selector).ajaxSubmit(function(){//something you wanna do if form is submitted successfully}) 
}); 
}); 
1

讓我們來看看,所以這是一個形式,它的提交時下拉選擇被更改? 你並不需要爲此使用AJAX。 你可以這樣使用jQuery的.change()方法:

$('.mydropdown').change(function() { 
    // Also do some checking to see if the values are not empty 
    // and then submit the form using: 
    $('#myform').submit(); 
}); 

在php文件,你可以使用$ _ POST變量得到它們。

1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<form id="form1" name="form1" method="post" action="#"> 
    <label for="brand">Brand</label> 
    <select name="brand" id="brand"> 
     <option>Apple</option> 
     <option>Microsoft</option> 
     <option>Google</option>  
    </select> 
    <input type="hidden" name="date" id="date" value="7/4/1776" /> 
    <input type="hidden" name="city" id="city" value="My City" /> 
    <input type="hidden" name="address" id="address" value="123 Fake Street" /> 
</form> 
<script type="text/javascript" src='//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script> 
<script type="text/javascript"> 
    $('#brand').on('change',function() { 
     $.post("process.php", $("#form1").serialize()); 
    }); 
</script> 
</body> 
</html>