2017-01-29 2 views
0

Это мой первый пост, пожалуйста, простите меня за любые вопиющие ошибки проводки. Я пытаюсь создать флажок на странице html, но я хотел бы получить данные с моей .php-страницы. На данный момент в моем коде не имеет значения, проверен ли флажок или нет, он показывает тот же ответ (что он есть) - любые предложения?Решение checkbox в ajax & php

HTML код

<script type="text/javascript"> 
function ajaxFunction() 
{ 
var xmlHttp; 
try 
    { 
    // Firefox, Opera 8.0+, Safari 
    xmlHttp=new XMLHttpRequest(); 
    } 
catch (e) 
    { 
    // Internet Explorer 
    try 
    { 
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
    catch (e) 
    { 
    try 
     { 
     xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    catch (e) 
     { 
     alert("Your browser does not support AJAX!"); 
     return false; 
     } 
    } 
    } 
    xmlHttp.onreadystatechange=function() 
    { 
    if(xmlHttp.readyState==4) 
     { 
     //alert(xmlHttp.responseText); 
     document.getElementById("DisplayBox").innerHTML=xmlHttp.responseText; 
     } 
    } 
    // start the query string 
    var QueryString = "IceCream_Coating.php?"; 
    QueryString = QueryString + "checked=" + document.getElementById("checked").value; 
    //alert(QueryString); 
    xmlHttp.open("GET", QueryString, true); 
    xmlHttp.send(null); 
    } 

</script></head> 

<body> 
<p>Is the box Checked</p> 
<form id="myform" name="myform" method="POST"> 
<p><input type="checkbox" name="checked" id="checked" value="yesORno"></p> 
    <input type="button" name="button" id="button" value="Decision" onclick="ajaxFunction();"/> 
    </p> 
</form> 
    <p> 
    <div id="DisplayBox"> 
    </div> 
    </p> 
</body> 

PHP код

<?php 

$value = $_GET['checked']; 

if (isset($value)) { 
    echo "Yes the box is checked."; 
} else { 
    echo "No, the box is not checked."; 
} 

?> 
+0

Попробуйте изменить PHP 'if' синтаксиса:' если (Исеть ($ _ GET [ 'проверил' ])) {'etc .... –

+0

Получаю тот же результат. – Whistler

+0

'document.getElementById (" checked "). Значение' даст вам значение для этого флажка. Он не проверяет, проверено ли оно или нет. Значение этого элемента будет по-прежнему одинаковым. –

ответ

1

Вы должны проверить, если флажок установлен или нет. В настоящее время вы просто извлекаете значение, установленное в элементе, независимо от того, является ли оно состоянием.

Попробуйте это:

var QueryString = "IceCream_Coating.php?"; 

if (document.getElementById("checked").checked) { 
    // Only add the value if it is checked 
    QueryString += "checked=" + document.getElementById("checked").value; 
} 

Мы также должны изменить код PHP:

<?php 
// We need to check if the parameter is set before trying to use it 
$value = isset($_GET['checked']) ? $_GET['checked'] : null; 

if ($value) { 
    echo "Yes the box is checked."; 
} else { 
    echo "No, the box is not checked."; 
} 

?> 
+0

Что произойдет, если я когда-нибудь сделаю ajax-вызов с '{'checked': false}', Magnus? :) –

+0

Я только что обновил код. Тогда он сказал бы: «not.checked». Если вы хотите сказать, что он проверен в этих случаях, просто измените оператор if: 'if (is_null ($ value))'. Это означает, что он проверен, если значение не будет считаться нулевым. –