PHP结果到AJAX的比较数组问题

时间:2016-02-19 18:41:03

标签: javascript php jquery ajax

这里有一些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信息进行比较的格式获取数组。在此先感谢您的帮助。

2 个答案:

答案 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');
    }

});