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

HTTP はリクエストを文字列として転送するため、Javascripts true!= PHP では、PHPまたはtrue PHP で文字列を使用する必要があります。'true''false'

PHP は任意の値の文字列を true とみなすため、現在のコードはtrue常に検出されるブール値を探しているため、常に if ブロックの真の部分を実行し、ブロックは実行しませんelse

于 2013-04-30T15:11:42.450 に答える
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 に答える