这里有一些PHP和AJAX的问题。希望有人可以帮助我:
目标:
使用Ajax将数据库中的日期与jquery中每个循环获取的日期进行比较
到目前为止我所拥有的:
的Ajax / jQuery的:
var $sqlcal = $('#calHeader').data('sqlcal');//contains database
$.ajax({
type: "GET",
url: 'XXXX.php',
data: {sqlcal: $sqlcal},
success: function(data){
var x = data;
$('.open-button').each(function(){
var e = $(this);
var e1 = e.data('dtc'); //contains dates yyyy-mm-dd
if (e1 == x){
//e.css('background','red');
console.log('yes')
}else{
console.log('no');
}
//console.log(e1);
});
},
error: function(){
console.log('didnt work');
}
});
PHP
//MySQL Database Connect
include 'scripts/connect.php';
if(isset($_GET['sqlcal'])){
$currentCal = $_GET['sqlcal'];
$sqlGetEvents = "SELECT eventDate FROM $currentCal";
$eventResults = $connection->query($sqlGetEvents);
if ($eventResults->num_rows > 0){
$a = array();
while($row = $eventResults->fetch_array()){
array_push($a, array($row['eventDate']));
}
echo (json_encode($a));
}
}//end of script
PHP结果格式:
[
["2016-02-05"],
["2016-02-05"],
["2016-02-05"],
["2016-02-06"],
["2016-02-07"]
]
我似乎无法以可用于与jQuery信息进行比较的格式获取数组。在此先感谢您的帮助。
答案 0 :(得分:0)
看起来问题来自数据库返回的日期,尝试将返回的日期转换为jQuery代码中的日期:
while($row = $eventResults->fetch()){
$date = date("yyyy-mm-dd", strtotime($row['eventDate']));
array_push($a, array($date));
}
修改后:
x
是一个数组数组,所以你不能只是if (e1 == x){
你应该得到每个项目的值,试试:
$('.open-button').each(function( index ){
var e = $(this);
var e1 = e.data('dtc'); //contains dates yyyy-mm-dd
if (e1 == x[index]){
console.log('yes')
}else{
console.log('no');
}
});
希望这有帮助。
答案 1 :(得分:0)
你应该使用.inArray
而你的PHP应该只输出一维数组,如:["2016-02-04", "2016-02-05", "2016-02-05", "2016-02-06", "2016-02-07"]
。另外,如果您收到JSON,请务必将dataType
设置为'json'
。换句话说,您的代码应该是:
<强> PHP:强>
while($row = $eventResults->fetch_array()){
array_push($a, $row['eventDate']);
}
<强> JS:强>
$.ajax({
type: "GET",
url: 'data.php',
dataType: 'json',
success: function (dates) {
$('.open-button').each(function () {
var date = $(this).data('dtc'); //contains dates yyyy-mm-dd
if ($.inArray(date, dates) > -1) {
$(this).css('color', 'red');
console.log('yes')
} else {
console.log('no');
}
});
},
error: function () {
console.log('didnt work');
}
});