php ajax复选框总是检查

时间:2016-09-02 15:38:38

标签: php jquery ajax checkbox

我有一个表单根据收到/检查的数据显示引号。

这是一个非刷新页面,因此它使用ajax获取提交点击,然后将数据发送到php文件。

主要问题是复选框总是被检查,并且回显“开启”。我需要复选框正常工作,默认情况下取消选中,然后当用户点击它时,并提交表单,他们将实际检查。

这些是复选框

<div class="checkbox">
        <label><input type="checkbox" name="lighting" id="lighting"><font color="#2C3E50" value="">Lighting</label></font>
        <label><input type="checkbox" name="heating" id="heating"><font color="#2C3E50" value="">Heating</label></font>
        <label><input type="checkbox" name="dancefloor" id="dancefloor"><font color="#2C3E50" value="">Dancefloor</label></font>
        <label><input type="checkbox" name="internaldressing" id="internaldressing" value=""><font color="#2C3E50">Internal Dressing</label></font>
    </div>

我尝试删除value属性,我尝试添加checked属性。没有任何帮助。

这是AJAX文件的一部分:

    var dataString = 'eventtype=' + eventtype + '&peoplecount=' + peoplecount + '&location=' + location + '&eventdate=' + eventDate + '&lighting=' + lighting + '&heating=' + heating + '&dancefloor=' + dancefloor + '&internaldressing=' + internaldressing;


    $.ajax({  
    type: 'POST',  
    url: 'process.php',
    data: dataString,
    success: function(data) {
        if( data == '0' )
            alert( 'Błędne dane logowania!!!' );
        else
             $('#results').html(data);

    }  
}); 
        event.preventDefault();

然后我的PHP看起来像这样。

if(isset($_POST)){

        // Total price of quote. 
        $price = 0;
        // Prices of extras. 
        $lighting_price = 0;
        $heating_price = 0;
        $dancefloor_price = 0;
        $internaldressing_price = 0;

        // Stage I VARIABLES
        $eventType = $_POST['eventtype'];
        $peoplecount = (int)$_POST['peoplecount'];
        $location = $_POST['location'];
        $eventDate = $_POST['eventdate'];

        // Stage II VARIABLES 
        $lighting = $_POST['lighting'];
        $heating = $_POST['heating'];
        $dancefloor = $_POST['dancefloor'];
        $internaldressing = $_POST['internaldressing'];

        // If there are less than 70 guests then make base price 650. 
        if($peoplecount < 70){
            $price = $price + 650;
            $lighting_price = 75; 
            $heating_price = 150;
        }

        // If there are between 71 and 130 guests then make base price 950.
        if(($peoplecount >= 71) && ($peoplecount <= 130)){
            $price = $price + 950;
            $lighting_price = 150;
            $heating_price = 250;
        }

        if (isset($_POST['lighting'])){
            echo "IM TICKEED!!!!!!!";
        }

        if (isset($_POST['heating'])){
            echo "IM TICKEED!!!!!!!";

        }

        echo $eventType . "<br>";
        echo $peoplecount . "<br>";
        echo $lighting . "<br>";
        echo $heating . "<br><br>";
        echo $price;

        }

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

首先是第一件事。请为您的复选框添加值属性。它们将作为值传递给您的网址。

请检查是否选中了复选框。尝试放置已检查的伪选择器。

$('#lighting:checked').val()

如果未选中该复选框,则会给出未定义的值,因此请在分配值时检查该条件。

 var lighting = ($('#lighting:checked').val() === undefined )? null : $('#lighting:checked').val(); 

上面这行不会对代码产生太大的影响,但有一件好事。

在将其分配给datastring变量时,您可以检查它是否为null或未定义,并附加类似的字符串。如果变量有值,则将其附加到datastring变量,该变量将作为ajax url传递。

希望这能解决您的问题。

答案 1 :(得分:0)

在javascript ajax语法中,将此代码放在ajax请求成功函数

document.getElementById('lighting').checked = false;

通过更改ID名称

为其他复选框执行此操作