繁体   English   中英

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

[英]Pass value in php and use in js

我有一个带有以下代码的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中接收结果。

我做错了什么?

我可能是错的,但似乎您以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 );
    });
});  

而且,顺便说一句,不要忘记逃避注射或使用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;
    }                               
?>

在.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文件中以查看发生了什么。 如果我仅在URL末尾使用带?date的php文件,并且在js内看到日期变量并转到URL,我会得到正确的结果。

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

有任何想法吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM