0

div のチェックボックスにチェック済みのコールバックを追加し、その場合に ajax 呼び出しを行う JS がいくつかあります。

$("#filter").on('change', '[type=checkbox]', function () {

    $.ajax({
        type: "POST",
        url: "CalendarServices.aspx/UpdateFilter",
        data: 'id=' + this.value + '&checked=' + this.checked,
        success: function (data) {
            $('#calendar').fullCalendar('refetchResources');
        },
        error: function () {}
    });

しかし、ajax 呼び出しの POST 値を確認すると、「チェック済み」は常に true です。id は正しいですが、どれだけ切り替えても、checked は常に true です。

何が間違っている可能性がありますか?

ありがとう

4

3 に答える 3

1

使ってみて

$(this).is(':checked')

また

$(this).prop('checked')
于 2013-03-05T18:34:04.107 に答える
0

しかし、ajax呼び出しのPOST値をチェックすると、「checked」は常にtrueになります。IDは正しいですが、どれだけ切り替えても、チェックは常にtrueです。

私はこれがあなたのjavascriptの問題ではないという予感があります。しかし、おそらくサーバーがこれらの値を取得しているため、正しく読み取られていません。

2つのリクエストがあるとしましょう:

/foo/bar?checked=true
/foo/bar?checked=false

サーバーがこの擬似コードのようにコーディングされている場合:

if (params.checked) {
  doStuffWhenChecked();
} else {
  doStuffWhenNotChecked();
}

次に、問題があります。これはparams.checked、文字列"true"または文字列のいずれかであるため"false"です。そして、ほとんどの言語"false"では、空でない文字列と同様に、真の値です。

"true"チェックされた処理を実行するために文字列を検索する、このようなものが必要です。

if (params.checked == "true") {
  doStuffWhenChecked();
} else {
  doStuffWhenNotChecked();
}
于 2013-03-05T18:40:40.270 に答える
0

ajax が影響しないかどうかを確認するために this.checked を移動しようとしましたか。アラートで onchange を単純にテストすると、機能します。

$("#filter").on('change', '[type=checkbox]', function () {
    // dirty but works...
    var datas = 'id=' + this.value + '&checked=' + this.checked;
    console.log(this.checked);

    $.ajax({
        type: "POST",
        url: "CalendarServices.aspx/UpdateFilter",
        data: datas,
        success: function (data) {
            $('#calendar').fullCalendar('refetchResources');
        },
        error: function () {}
    });
});
于 2013-03-05T18:39:25.813 に答える