Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用json将php输出到javascript数组_Javascript_Php_Jquery_Arrays_Json - Fatal编程技术网

使用json将php输出到javascript数组

使用json将php输出到javascript数组,javascript,php,jquery,arrays,json,Javascript,Php,Jquery,Arrays,Json,我有一个项目,它可以输出日期项的json_编码字符串 看起来像这样: <input type="hidden" class="avail_dates" data-id='["12-9-2014", "7-9-2014"]' /> 使用此选项没有任何作用: var availableDatesArray = jQuery('.avail_dates').attr('data-id'); //alerting gives ["9-9-2014","5-9-2014","7-9-201

我有一个项目,它可以输出日期项的json_编码字符串

看起来像这样:

<input type="hidden" class="avail_dates" data-id='["12-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 = jQuery('.avail_dates').attr('data-id'); 
availableDatesArray = JSON.parse(availableDatesArray);
console.log(availableDatesArray);
或者更好的建议是@charlie

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

示例:

var availableDatesArray = JSON.parse(jQuery('.avail_dates').attr('data-id'));
var availableDatesArray = jQuery.parseJSON(jQuery('.avail_dates').attr('data-id'));
如果您愿意,您可以使用

示例:

var availableDatesArray = JSON.parse(jQuery('.avail_dates').attr('data-id'));
var availableDatesArray = jQuery.parseJSON(jQuery('.avail_dates').attr('data-id'));
这实际上就是jQuery本身在AJAX响应中解析JSON的方式。

请使用

示例:

var availableDatesArray = JSON.parse(jQuery('.avail_dates').attr('data-id'));
var availableDatesArray = jQuery.parseJSON(jQuery('.avail_dates').attr('data-id'));
如果您愿意,您可以使用

示例:

var availableDatesArray = JSON.parse(jQuery('.avail_dates').attr('data-id'));
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对象。

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

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

jQuery('.avail\u dates').attr('data-id')
将返回一个字符串(“data-id”属性的内容。
JSON.parse
将实际从中创建一个JavaScript对象。

如果使用
jQuery.data(),则无需使用
JSON.parse()
如果它是有效的JSON,就会将其读取为数组,并进行内部解析。我应该提到我已经尝试过JSON.parse。它给出了一个“意外数字”错误。格式为“9-9-2014,5-9-2014,7-9-2014”,显然我需要这个函数的括号和双引号work@David该数据的来源是什么?PHP是否回应了这一点?正如您在当前帖子中提出的问题,它工作正常。@David您的示例中有
[]
。它们是否不存在或您希望删除的内容?无需使用
JSON.parse()
,如果使用
jQuery.data()
将读取它作为数组,如果它是有效的JSON,并对其进行内部解析。应该提到我已经尝试过JSON.parse。它给出了一个“意外数字”错误。错误不起作用。格式为“9-9-2014,5-9-2014,7-9-2014”,显然我需要这个函数的括号和双引号work@David这些数据的来源是什么?PHP是否与之相呼应?正如您在当前帖子中提出的问题,它工作正常。@David You have
[]
在您的示例中。它们是否不存在或您希望删除的内容?类似于:我无法重现您的“意外数字”使用
JSON.parse
时出错。您能提供一个JSFIDLE吗?@David,JSON.parse在这里可以使用@David显示的html,很可能您没有告诉我们一些缺失的部分,就目前而言,使用您的示例,使用JSON.parse和.data会很好地工作。请参见编辑,我添加了用于将其传递给的函数。当很难使用c时oded它工作正常,动态上一点也不。json.parse给出了一个类似的错误:我无法重现您的“意外数字”使用
JSON.parse
时出错。您能提供一个JSFIDLE吗?@David,JSON.parse在这里可以使用@David显示的html,很可能您没有告诉我们一些缺失的部分,就目前而言,使用您的示例,使用JSON.parse和.data会很好地工作。请参见编辑,我添加了用于将其传递给的函数。当很难使用c时oded它工作正常,动态上一点也没有。json.parse给出了一个错误