jQuery,AJAX和MySQL中的Checkbox问题

时间:2016-05-21 21:03:45

标签: javascript php jquery mysql ajax

我在将带有复选框的变量集中的值发送到MySQL数据库时遇到了一些麻烦。

确定。

我有一个复选框,电子邮件字段和一个按钮:

    <label><input type="checkbox" id="emailSubCheck"> Check me</label>

    <input type="text" class="form-control email-field" id="emailInput" name="email" placeholder="Your e-mail...">

    <button id="sendReportAsMail" class="btn btn-default" type="button">Send</button>

然后我运行这个jQuery(它是被检查的变量导致我麻烦。它总是向数据库返回0。无论我做什么):

   $(document).ready(function() {
var checked;
function checkEmailSub() {

$('#emailSubCheck').click( function() {
  if ($('#emailSubCheck').is(':checked')) {
      checked = 1;
    } else {
      checked = 0;
    }
  });
}
checkEmailSub();

$("#sendReportAsMail").click(function(){

var email = $('#emailInput').val();

    $.ajax({
        type:"POST",
        url:"sendSubmits.php",
        data:"email="+email+"&checked="+checked, 
          success:function(data){
          console.log('Ok. So data have been submitted and as I get it. Checked value is now ' + checked);
        }
    });
 });
});

在日志中,如果我在提交前选中了框,则完美显示1,如果我没有,则显示0。

这让我相信jQuery(虽然不完美)正在发挥作用。

在我的sendSubmits.php中,我有:

$email=$_POST["email"];
$checked=$POST["checked"];

$sql = "INSERT INTO sendsubmits(email, checked) VALUES ('$email', '$checked')";

(注意:不包括数据库连接。每次提交时都会将电子邮件完美地插入到数据库中。只是缺少var检查的值)

我的MySQL数据库中的checked列是INT(1)。无论我尝试什么,只需要注册一个0。

我在这里做错了什么?

提前感谢一大堆!

2 个答案:

答案 0 :(得分:2)

您在javascript中输入了错误的ID,尝试更改输入的ID,如下所示:

<强> HTML

<label><input type="checkbox" id="emailSubCheck"> Check me</label>

在发出ajax请求刷新已检查变量之前运行checkEmailSub()函数。

<强> JAVSCRIPT

$("#sendReportAsMail").click(function(){

var email = $('#emailInput').val();
checkEmailSub(); //Add this to refresh the checked variable.
    $.ajax({
        type:"POST",
        url:"sendSubmits.php",
        data:"email="+email+"&checked="+checked, 
          success:function(data){
          console.log('Ok. So data have been submitted and as I get it. Checked value is now ' + checked);
        }
    });
 });
});

您还忘记了POST变量中的_,请将其替换为:

<强> PHP

$checked=$POST["checked"];

用这个:

$checked=$_POST["checked"];

答案 1 :(得分:2)

好像你忘了这里的“_”符号:

$checked=$_POST["checked"];

ids“emailSubCheck”(javascript)和“emailSubscribe”(html)不同。

而且一切都可以用更简单的方式完成:

$(document).ready(function() {
  $("#sendReportAsMail").click(function(){

    var email = encodeURIComponent($('#emailInput').val());
    var checked = $("#emailSubscribe").prop("checked") ? 1 : 0;
    $.ajax({
      type:"POST",
      url:"sendSubmits.php",
      data:"email="+email+"&checked="+checked, 
      success:function(data){
        console.log('Ok. So data have been submitted and as I get it. Checked value is now ' + checked);
      }
    });
  });
});