2017-07-31 70 views
0

我的jQuery复选框.on('click')代码甚至在检查触发器启动之前运行/非常混乱!所以,当复选框加载时,我点击它,代码运行。但是当页面被简单加载时,内部测试中的sql“if box is checked”会运行。这里是代码:jQuery点击运行检查框前的检查条件

jQuery('#chk_uploaded').on('click', function (event) { 
    if (jQuery('#chk_uploaded').is(':checked') != true) { 
    //window.alert("checked - activityid, approveddate, session['lm_required] = <?php echo $Activity_ID?>, 20<?php echo $FY ?>-06-30, <?php echo $_SESSION['lm_required'] ?>"); 
    <?php 
     $set_lm_required_SQL = "UPDATE cpy_activity SET lm_required = 1 WHERE activityid = " . $Activity_ID . " and approveddate > '20" . $FY . "-06-30' "; 
     $set_lm_required_RESULT = mssql_query($set_lm_required_SQL); 
     ?> 
     window.alert("<?php echo $set_lm_required_SQL ?>"); 
     } else { 
      window.alert("unchecked"); 
      <?php 
       $reset_lm_required_SQL = "UPDATE cpy_activity SET lm_required = " . $_SESSION['lm_required'] . " WHERE activityid = " . $Activity_ID . " and approveddate > '20" . $FY . "-06-30' "; 
       $reset_lm_required_RESULT = mssql_query($set_lm_required_SQL); 
      ?> 
       window.alert("<?php echo $reset_lm_required_SQL ?>"); 
       } 
}); 

基本上,我抓住了$ _SESSION VAR较早,所以当用户检查框中再次[取消选中]我可以重置lm_required VAR回到它最初。

因此,代码在勾选时会弹出“已检查”警报,未勾选时会弹出“未勾选”警报。当我将sql代码放入每个条件内时,它会提示sql语句正常。然后,当我提交sql来运行结果,并简单地加载页面时,sql将var设置为1.也就是说,我使用msSEM和值= 0进行查询。我只是加载页面,并且值= 1 ,在我检查框之前。任何想法为什么?

+1

您可以在复选框上添加onchange事件而不是单击事件。 – Webinion

+1

PHP在服务器上执行,客户端上的JavaScript。那些是两个不同的“世界” – Andreas

+0

thx,Pandhi - 我保持“点击”,但后来提到了修复的ajax函数。 Andreas thx也是花时间回复。建议 - 添加到你的评论:“一个安全的方式来使用这些世界是通过Ajax - 张贴到一个网址,照顾SQL。这样你保持他们分开,但应该发生时,你的SQL完成。”那么我会去看看阿贾克斯。我做了,并得到它的工作。人们从不同层面来到这里,而那些帮助引导用户前进的回应是有价值的。 – dcparham

回答

0

这里需要的是,在Andreas的指导下,将JavaScript和PHP世界分开==>使用带有.ajax函数的jQuery。然后

<html> 

<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
</head> 

<body> 
<?php 

$FY=16; 
$Activity_ID=12345; 

?> 
<script language="javascript"> 
    jQuery.ajax({ 
    url: "ajax_test2.php", 
    type: "POST", 
    data: {fy: <?php echo $FY; ?>, acid: <?php echo $Activity_ID; ?>}, 
    success: function(response){ 
     // alert $result from the php page which is called response here. 
     alert(response); 
    } 
}); 
</script> 

</body></html> 

在ajax_test2.php:此代码总结基本上我做了什么

<?php 
$hostname_sqldata = "db server name here"; 
$database_sqldata = "db name here"; 
$username_sqldata = "username here"; 
$password_sqldata = "password here"; 
$sql_conn = mssql_connect($hostname_sqldata, $username_sqldata, $password_sqldata); 

if (! $sql_conn) { 
echo "MS SQL connection error: $hostname_sqldata == " . mssql_get_last_message() ; 
exit ; 
} 

if (!mssql_select_db($database_sqldata, $sql_conn)) { 
    die('MS SQL : Unable to select database!'); 
} 

if ($_POST['fy'] != null && $_POST['acid'] != null){ 
$fy = $_POST['fy']; 
$acid = $_POST['acid']; 

$set_lm_required_SQL = "UPDATE table_name SET lm_required = 1 where activityid = $acid"; 
$set_lm_required_result = mssql_query($set_lm_required_SQL); 

$get_lm_required_SQL = "SELECT * FROM cpy_activity WHERE activityid = $acid"; 
$get_lm_required_result = mssql_query($get_lm_required_SQL); 

$row = mssql_fetch_array($get_lm_required_result); 
$lm_required = $row['lm_required']; 
$result = "fy/acid/lm_required: " . $fy . "/" . $acid . "/" . $lm_required . ""; 

//$result = $set_lm_required_SQL; 

}else{ 
    // either of the values doesn't exist 
    $result = "No Data Was Sent !"; 
} 
// returning $result which is either 15 or " no data was sent " 
echo $result; 
?> 

我希望我在所有的4维空间中的代码间距得到。检查parens进行适当的配对,但这是我用于成功测试的代码。 thx,全部为您的输入!