php输出到带有json的javascript数组

php output to javascript array with json

本文关键字:javascript 数组 json 输出 php      更新时间:2023-09-26

我有一个项目,它吐出日期项的json_encode字符串。

看起来像这样:

<input type="hidden" class="avail_dates" data-id='["12-9-2014", "7-9-2014"]' />

我尝试过不同的方法,但由于这个项目必须存在,我不能简单地进行ajax调用并返回json_encode内容。

因此,我需要以某种方式将数据id获取到一个javascript数组中,以用于datePicker。

使用这个方法是可行的,但它是硬编码的:

var availableDates = ["9-9-2014","5-9-2014","7-9-2014"];

使用这个没有任何作用:

var availableDatesArray = jQuery('.avail_dates').attr('data-id'); 
//alerting gives ["9-9-2014","5-9-2014","7-9-2014"]

有没有一种方法可以将字符串转换为有效的数组?

我可以更改数据进入数据id的方式,或者jquery与元素交互的方式,但我不能仅为此添加单独的ajax查询,它必须来自该数据id。

var availableDates = ["9-9-2014","5-9-2014","7-9-2014"];    
function dates(date){
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear();
    console.log(dmy+' : '+(jQuery.inArray(dmy, availableDates)));
    if (jQuery.inArray(dmy, availableDates) != -1) {
        return [true, "","Available"];
    } 
    else {
        return [false,"","unAvailable"];
    }           
    return;
}
jQuery('#myDates').datepicker({
changeYear: true,
maxDate: '0',
changeMonth: true,
dateFormat: "mm/dd/yy",
yearRange: '2014:2030',
beforeShowDay: dates,       
onSelect: function(dateText) {
}
});

编辑:应该提一下我已经试过json.parse了。它给出了一个"意外数字"错误。

编辑2:我添加了一个函数,我也试图为jQuery datePicker传递数据。

是的,可以使用JSON.parse。像这样:

var availableDatesArray = jQuery('.avail_dates').attr('data-id'); 
availableDatesArray = JSON.parse(availableDatesArray);
console.log(availableDatesArray);

或者@charlie 的更好建议

var availableDatesArray = jQuery('.avail_dates').data('id'); // much better

只需使用JSON.parse

示例:

var availableDatesArray = JSON.parse(jQuery('.avail_dates').attr('data-id'));

如果您愿意,可以使用jQuery.parseJSON

示例:

var availableDatesArray = jQuery.parseJSON(jQuery('.avail_dates').attr('data-id'));

这实际上就是jQuery本身在AJAX响应中解析JSON的方式。

除非我误解了你的问题,否则你只需要使用JSON.parse:

var availableDatesArray = JSON.parse(jQuery('.avail_dates').attr('data-id'));

jQuery('.avail_dates').attr('data-id')只会返回一个字符串("data-id"属性的内容。JSON.parse实际上会从中创建一个JavaScript对象。