在php中传递值并在js中使用
我有一个php文件,其中包含以下代码:在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
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();
}
});
});