jQuery计时问题?使用PHP / mssql

时间:2012-12-03 20:37:37

标签: php jquery sql

<html>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
<?php 
    // this sets variables sot session for nodeid 
    $nid = 1;//$_GET["nnid"];

    session_start(); 
    $_SESSION['sesnodid']=$nid;
?> 

var array;

$(document).ready(function (){
    $('#itemsOnPageDiv input:checkbox').click(function(event){
        var obj = [];
        $('#itemsOnPageDiv input[type=checkbox]:checked').each(function(index, value){
        obj.push($(this).attr("value"));
        alert($(this).attr("value")+" added to array");
    });
    array = JSON.stringify(obj);
    });
});



$(document).ready(function(){
    $("#cl").click(function(){
    $.post('buildUserPage.php', { array : array }, 
    function(output){
        $('#debug').html(output).show();
    });
    alert(array);
    });
});

</script>
<div id="itemsOnPageDiv">

<?php

include("hawkfunctions.php");

newPageCheckBoxBuider();

$user_page_cell_info = getUserPageCellInfo($nid);

$i = 0;

echo "<script>";
while($i < count($user_page_cell_info)){
    echo "
    alert('Clicking ".$user_page_cell_info[$i]['tag_id']."');
    \$(document).ready(function(){
    \$('#".trim($user_page_cell_info[$i]['tag_id'])."').trigger('click');
    });";
    $i++;
}
echo "</script>";
?>

</div>

<button id="cl">Save</button>

<div id = 'debug'></div>
</html>

行。我有一个从sql db构建的复选框列表。我使用php编写jquery,根据db中的数据获取正确的“已检查”框。然后我让这个脚本“点击”所需的复选框。然后每次“点击”填充一个数组。此数组将包含jquery“clicked”框所需的数据以及用户选中或取消选中的任何框。此数组将由另一个php脚本用于根据检查的框中的更改来更改数据库。

问题在于:

应该检查正确检查的框,但是。应该填充的数组无法始终正确填充。最明显的是,如果最初只选中其中一个复选框,则该数组为空。用户取消选中然后再次检查似乎解决了这个问题,但显然这并不理想。有时,当选中2时,其中一个复选框数据不会进入数组。过去的任何金额似乎都可以。

1 个答案:

答案 0 :(得分:0)

单击复选框是不明确的。有时它可以工作 - 有时它不工作。这是一种不可靠的方法。如果已经检查过,它将取消选中它。

正确的方法是使用.prop函数或.attr()(参见辩论here

$('#".trim($user_page_cell_info[$i]['tag_id'])."').prop("checked", true)

虽然我们在这里,但这里有一些提示。

  • 分隔文件。 PHP / HTML / JS / CSS不应该在一起(为清楚起见)

  • 据我所知..每次点击一个复选框,它都会重建你的复选框JSON ......然后什么都不做。因此,如果我单击3个框,它将查询文档3次以构造JSON。你应该只在有人点击$(“#cl”)按钮时才这样做。

  • 不要将数组命名为“array”。试着把它命名为更清楚的东西,比如,checkbox_array。