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

在php中传递值并在js中使用,php,jquery,Php,Jquery,我有一个php文件,其中包含以下代码: <?php dateIndaysoff($_GET['date']); function dateIndaysoff($mydate){ if(!$mydate)return false; $host = "localhost"; $user = "user"; $pass = "pass"; $databaseN

我有一个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;
            }                               
        ?>
但我总是有真实的结果。php由自己的作品完美演绎。我试图在jquery中调用php,并通过url传递来自datepicker的值,如果结果为true,则执行一些操作。我用固定的值尝试了jquery,它的工作方式很有魅力。我所犯的错误应该是php内部或使用GET接收值,或者在jquery中接收结果


我做错了什么?

我可能错了,但你似乎认为最终结果是你的回答,但实际上是你的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 );
    });
});  
另外,别忘了注射,或者使用PDO绑定。

更新的解决方案。 在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;
    }                               
?>
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文件中放置了日志,以便查看发生了什么。若我只使用url末尾带有?date的php文件,我会得到正确的结果,并且我在js中看到我得到了日期变量,它会转到url

但由于某些原因,我总是从.js IF中得到隐藏条件。当日期等于2016年4月30日时,我应该得到显示条件,但似乎我在js中有错误(可能没有),或者我在这两个文件的连接之间有错误


有什么想法吗?

您要传递给
$\u GET['date']
的日期格式是什么?它是如何存储在数据库中的?是的,但我希望所有这些都在.datepicker的更改条件下进行,正如第一次发布的那样,所以将所有这些都放在.change侦听器中。我将更新它以向您展示。您正在使用答案提问?无论如何,很容易判断错误在哪里:console.log(dateIndaysoff);。在这里,您的PHP有很多问题,比如围绕真/假的引号和与结果不同的其他内容。你试过我上面的答案了吗?
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();
     }
});
});