1

我已经构建了一个在 php 中运行良好的订阅表单,我现在已经将 jquery 应用到它以避免页面刷新。

HTML 表单

<input name="newsletter" type="checkbox" id="checkbox" value="true">
<input name="offer" type="checkbox" id="checkbox" value="true">

PHP

<?php
if(isset($_POST['newsletter']) && isset($_POST['newsletter'])==true){
    $newsletter = true;
} else {
    $newsletter = false;
}

if(isset($_POST['offer']) && isset($_POST['offer'])==true){
    $offer = true;
} else {
    $offer = false;
}

echo 'type1='.$newsletter;    
echo 'type2='.$offer;

$query = "UPDATE $table SET type1='$newsletter', type2='$offer' WHERE id=$id"; 
$result = mysqli_query($connection, $query) or trigger_error(mysqli_error($connection), E_USER_ERROR);

jQuery

    var newsletter = false;
    var offer = false;
    var newsletterval = $("input[name='newsletter']").is(':checked');
    var offerval = $("input[name='offer']").is(':checked');

    if(newsletterval){
        newsletter=true;
    };

    if(offerval){
        offer=true;
    };

    $.post('../../subscribe.php', {newsletter:newsletter, offer:offer}, function(data){
        alert(data);            
    });

当使用 php 工作正常时,我可以更改订阅类型,但 jquery 在这里不起作用,它不会改变任何内容,并且type1=1type2=1无论我选中或取消选中哪个复选框,我都会从发布数据中收到警报。

请查看并建议使用 jquery 执行此操作的任何可能方法。

谢谢

4

2 回答 2

0

我猜你正在尝试这样的事情:

if(newsletterval){
    // use the string representation 'true' rather than a boolean value
    newsletter='true';
};

if(offerval){
    // use the string representation 'true' rather than a boolean value
    offer='true';
};

$.post('../../subscribe.php', {newsletter:newsletter, offer:offer}, function(data){
    alert(data);            
});

php代码:

<?php

if(isset($_POST['newsletter']) 
  // Check the value of `$POST['newsletter']` rather than using isset() twice
  && $_POST['newsletter'] === 'true'){
    $newsletter = true;
}

...

于 2013-04-30T15:08:36.433 回答
0

HTTP 将请求作为字符串传输,因此 Javascripts true!= PHPtrue 你需要在 PHP 中使用字符串'true''false'

由于 PHP 会将任何值的字符串等同于 true,因此您当前的代码正在寻找一个布尔值true,它将始终找到,因此您将始终执行 if 块的真实部分,而不是else

于 2013-04-30T15:11:42.450 回答