PHP - 表单复选框提交与AJAX

问题描述:

我hava设置AJAX脚本,当你点击它调用一个PHP文档的按钮。PHP - 表单复选框提交与AJAX

我现在的问题是PHP文件中的一些变量被设置为常量,现在我希望它们能够在单击按钮时发送的条件。

我想那里有一个复选框,如果点击,将设置一个PHP变量为TRUE,而如果不点击,则设置为FALSE。

我希望问题足够清楚。

我现在将粘贴下面的代码,因为它可能有助于澄清问题。

对不起,我必须粘贴这个“庞大”的代码块,但我不确定哪些可能是有用的,哪些不是。

这里是index.html的

<html> 
<head> 
<script type="text/javascript"> 
function loadXMLDoc() 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","roulette.php",true); 
xmlhttp.send(); 
} 
</script> 
</head> 
<body> 

<div id="myDiv"><h2>Welcome to Trufa&rsquo;s Roulette</h2></div> 
<button type="button" onclick="loadXMLDoc()">Spin the Wheel!</button> 

</body> 
</html> 

这里是roulette.php的一部分

### Comprare pick to result 

//The squares 

$sqr_00 = -1; 
$sqr_0 = 0; 
$sqr_1 = 1; 


//Placed bets, if true he placed bet 

$bet_straight_placed = array(
$sqr_00 => false, 
$sqr_0 => true, 
$sqr_1 => true 
); 

我需要什么,我以前告诉过,是替代FALSE在$sqr_00 => false,对于当复选框被选中时变量是真的!

我希望这个问题已经够清楚了,但是请您澄清一下!

提前致谢!

特鲁

编辑:

寻址@grossvogel回复我张贴我的理解他的回答becuse它无法正常工作。对不起,非常感谢!

<html> 
<head> 
<script type="text/javascript"> 
function loadXMLDoc() 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","roulette.php",true); 
xmlhttp.send(); 
} 
var isChecked = document.myform.checkbox.checked ? 1 : 0; 
xmlhttp.open("GET","roulette.php?boxchecked=" + isChecked,true); 
</script> 
</head> 
<body> 

<div id="myDiv"><h2>Welcome to Trufa&rsquo;s Roulette</h2></div> 
<form name="myform"> 
<input type="checkbox" name="checkbox" value="checkbox" />00<br /> 
<button type="button" onclick="loadXMLDoc()">Spin the Wheel!</button> 
</form> 

</body> 
</html> 

和PHP

//The squares 

$sqr_00 = -1; 
$sqr_0 = 0; 
$sqr_1 = 1; 


//Placed bets, if true he placed bet 
$chb_00 = $_GET['boxchecked']; 

$bet_straight_placed = array(
    $sqr_00 => (bool) $chb_00, 
    $sqr_0 => true, 
    $sqr_1 => true 
); 

//tell the user what number he piecked 

echo "You chose this numbers: " . join(", ", array_keys(array_filter($bet_straight_placed))) . '<br />' . '<br />'; 

我很抱歉,我知道这一定是完全基本的,但我不能让我的头围绕这个AJAX“东西”呢。

谢谢!!!

+0

一个建议,当你试图获得AJAX的挂件:使用Firebug。它给出了有用的错误,让你把你的javascript中的断点,并让你查看所有异步请求的内容。无价。 http://getfirebug.com/ – grossvogel 2010-10-19 22:54:29

+0

好的建议,我会感谢你! – Trufa 2010-10-19 23:00:23

在JavaScript,你可以做这样的事情

var isChecked = document.myform.checkbox.checked ? 1 : 0; 
xmlhttp.open("GET","roulette.php?boxchecked=" + isChecked,true); 

然后,在你的PHP,你可以阅读$_GET['boxchecked'],这将是1,如果在检查中,0,如果事实并非如此。

编辑:扩展到多个领域的想法。
要做到这一点,你会添加尽可能多的复选框,你可以说他们的名字是value1, value2, value3, ...。然后,你可以做这样的事情:

var value1 = document.myform.value1.checked ? 1 : 0; 
var value2 = document.myform.value2.checked ? 1 : 0; 
var value3 = document.myform.value3.checked ? 1 : 0; 
... 

xmlhttp.open("GET","roulette.php?value1=" + value1 + "&value2=" + value2 + "&value3=" + value3 ...,true); 

在PHP中,读$_GET['value1'], $_GET['value2'], $_GET['value3']...

一旦你的理念,你可以写一些功能,以减少重复,如果你想。

+0

谢谢,我会试试看! – Trufa 2010-10-19 22:01:50

+0

我应该在index.html中输入: 00
? – Trufa 2010-10-19 22:10:42

+0

是的,您需要添加复选框输入。它应该驻留在一个表单中(在我的例子中,'name =“myform”'),它的名字应该与javascript(在我的例子中,'checkbox')匹配。值并不重要,但如果您希望在加载页面时检查它,则可以添加checked =“checked”。 – grossvogel 2010-10-19 22:20:51