0

私はこの問題を何時間も解決しようと真剣に取り組んできましたが、ここでたくさんの回答を読みましたが、うまくいきません.

単一の列を 0 (重要ではない) または 1 (重要) に設定することで、データベースで投稿を重要としてマークします。状態は、私のサイトのフォーム内のテキスト フォームをチェックする (またはチェックしない) ことによって判断する必要があります。これは、フォームを直接 php 処理スクリプトに送信すると問題なく機能しますが、フォームを jQuery で検証する場合は機能しません。この場合、何らかの理由で、チェックボックスがオンになっているかどうかに関係なく、常に投稿が重要であるとマークされます。

コードをチェックしてください:

<form method="POST" action="">
<fieldset>
  <legend>Form Title</legend>

  <label>Title *</label>
  <input type="text" name="headline" placeholder="...">
  <label>Contentn *</label>
  <textarea rows="10" cols="40" name="content"></textarea>
  <label class="checkbox">
    <input type="checkbox" name="important" id="important" value="checked">
    Important
  </label><br>

  <input type="submit" class="btn btn-success submit-post" value="Send">
</fieldset>
</form>

検証部分

$(document).ready ( function() {
$('.submit-post').click(function() {          

    // VALIDATION PART
    var form = $(this).closest('form');
    var headline = form.find('input[name=headline]');
    var content = form.find('textarea[name=content]'); 

    if( $('input[type=checkbox]:checked') ) {
        var important = 1;
    } else {
        var important = 0;
    }

    var passed = true;

    if (headline.val()=='') {
        headline.addClass('highlight');
        passed = false;
    } else {
        headline.removeClass('highlight');
    }

    if (content.val()=='') {
        content.addClass('highlight');
        form.find('.errorMessage').fadeIn();
        passed = false;
    } else {
        content.removeClass('highlight');
    }

    if (!passed) {
        return false;
    }

    //organize the data properly
    var data = 'headline=' + headline.val() + '&content=' + content.val() + '&important=' + important.val();

    //disabled all the text fields
    form.find('.text').attr('disabled','true');

    //show the loading sign
    $('.loading').show();

    //start the ajax
    var request = $.ajax({

        type: "POST",
        url: "process.php",
        // data: data,
        cache: false,
        success: function (html) {
            if (html == "true") {

                form.find('.sendMessage').attr('disabled','true');
                form.find('.successMessage').fadeIn();

            } else {
                alert("There was an error with your entry. Please try again later while we fix it! :)");
            }
        },
        error: function(jqXHR, textStatus, error) {
            // Fail
            alert("Form Error: " + error);
        }
    });

    //cancel the submit button default behaviours
    return false;

});

});

PHP

    <?php 

    include 'functions.php';

    // Check if form is submitted
    if ( $_SERVER['REQUEST_METHOD'] == "POST" && !empty($_POST['headline']) &&          !empty($_POST['content']) ) {

// Get job details
$title = ($_POST['headline']);
$content = ($_POST['content']);
$compensation = ($_POST['compensation']);
$category = ($_POST['category']);

// Check whether job was marked as 'important'
if ( isset($_POST['important']) ) {
    $important = 1 ;
} else {
    $important = 0;
}

// Get author details
$author_email = $_SESSION['email'];
$author_id = $conn->prepare("SELECT id FROM users WHERE email = ? ");
$author_id->bindParam(1, $author_email, PDO::PARAM_STR);
$author_id->execute();

$get_author_id = $author_id->fetch(PDO::FETCH_ASSOC);
$get_author_id = $get_author_id['id'];

// Here I add the information to the database

echo json_encode(true);
    } else {
echo "Error: Error submitting data to database";
    exit();
    }

    ?>

誰が何が起こっているのか考えていますか? ありとあらゆる方法を試しましたが、うまくいきません!よろしくお願いします。

どうもありがとう!!!

4

1 に答える 1

0

次のように変更$important = 1;する必要があります。

if ( isset($_POST['important']) ) {
    $important = $_POST['important'];
} else {
    $important = 0;
}

また、ここに問題があります:

var data = '.....&important=' + important.val();

それは次のようでなければなりません:

var data = '.....&important=' + important; 

.val()から削除important.val()

于 2012-12-04T00:10:33.227 に答える