在php中传递值并在js中使用

时间:2016-04-30 18:51:23

标签: php jquery

我有一个包含以下代码的php文件:

  <?php
dateIndaysoff($_GET['date']);
function dateIndaysoff($mydate){
 if(!$mydate)return false;


                $host = "localhost";
                $user = "user";
                $pass = "pass";
                $databaseName = "db";
                $con = new mysqli($host,$user,$pass,$databaseName);
                if ($con->connect_error) {
                    die("Connection failed: " . $conn->connect_error);
                    }

                $query = "SELECT date FROM table WHERE date = '$mydate'";
                $result = $con->query($query);
                 if ($result->num_rows < 1) {$exists =  "FALSE";} else {$exists = "TRUE";}
                 return $exists;
            }                               
        ?>

现在我的.js文件中使用了这个

jQuery(".datepicker").change(function() {  
   var val = jQuery(this).datepicker().val();
   var finalval = jQuery.get("url-to-phpfile/daysoff.php",{date:val});
  if (finalval) {

但是它总是如此真实。 php由自己的作品完美。我正在尝试在jquery中调用php并通过url传递来自datepicker的值,如果结果为true则执行某些操作。我尝试了具有固定值的jquery,它的工作就像一个魅力。我做的错误应该是或者在PHP中接收GET值或者在接收结果的jquery中。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

我可能是错的,但似乎你假设finalval是你的回答,但它实际上是你的XHR电话。在你的听众中试试这个:

jQuery(".datepicker").change(function() {  
    var val = $(this).datepicker().val();       // or $(this).val(); ?
    $.get( "ajax/test.html?date=" + val, function( data ) {
        alert( "Result is: " + data );
    });
});  

另外,不要忘记escape注射,或使用PDO绑定。

答案 1 :(得分:-1)

更新了解决方案。 在php文件中我使用:

<?php

$conversion = $_GET['date'];
$newDate = date("Y-m-d", strtotime($conversion));
dateIndaysoff($newDate);
$hello = dateIndaysoff($newDate);
echo 'Result:'.$hello . '<br>';
echo 'Converted date:'.$newDate. '<br>';
echo 'Initial date:'.$conversion. '<br>';
function dateIndaysoff($mydate){
        if(!$mydate)return false;

        //Connection
        $host = "localhost";
        $user = "user";
        $pass = "pass";
        $databaseName = "db";
        $con = new mysqli($host,$user,$pass,$databaseName);
        if ($con->connect_error) {
            die("Connection failed: " . $conn->connect_error);
            }

        //Select data   
        $query = "SELECT date FROM table WHERE date = '$mydate'";
        $result = $con->query($query);
       // $db=JFactory::getDbo();
         if ($result->num_rows < 1) {$exists =  "FALSE";} else {$exists = "TRUE";}
         return $exists;
    }                               
?>

并在.js中使用此:

jQuery(".datepicker").change(function() {
var val = jQuery(this).datepicker().val();
console.log(val);
jQuery.get("/daysoff.php",{date:val},function(dateIndaysoff){ // send back 0 or 1
      if (dateIndaysoff) {
       console.log("hide");
        jQuery('.chzn-drop li:nth-child(9)').hide();
        jQuery('.chzn-drop li:nth-child(10)').hide();
     } else {
       console.log("show");
         jQuery('.chzn-drop li:nth-child(9)').show();
         jQuery('.chzn-drop li:nth-child(10)').show();
     }
});
});

正如您所看到的,我已经将日志放在php和js文件中以查看最新情况。我得到了正确的结果,如果我只使用带有?日期在网址末尾的php文件,我在js中看到我得到了我的日期变量并且它转到了URL。

但由于某些原因,我总是从.js IF获得HIDE条件。当日期等于30.04.2016时,我应该得到SHOW条件,但似乎我在js中有错误(可能不是)我连接这两个文件之间有什么问题。

任何想法?