使用Jquery将php字符串数据转换为Json对象
Convert php string data to Json object using Jquery
我需要从PHP到jquery获取一些Json数据。
我需要javascript方法中的以下格式。
function returnJson()
{
return {
events: [
{
"id": 1,
"start": new Date(2013, 4, 26, 12),
"end": new Date(2013, 4, 26, 13, 30),
"title": "Lunch with Mike"
},
{
"id": 2,
"start": new Date(2013, 4, 27, 14),
"end": new Date(2013,4, 27, 14, 45),
"title": "Dev Meeting"
}]
};
}
为此,我在javascript中做了以下事情:
function returnJson()
{
var eventResult = $.getJSON("../PHP/PhpAction.php?f=fetchCalendarEvent");
return eventResult;
}
php:
function fetchCalendarEvent()
{
$tablename = "tb_calendar";
$sql = "SELECT eventId,userId,enentName,eventText,EXTRACT(YEAR FROM startTime) AS startyear,EXTRACT(MONTH FROM startTime) AS startMonth,EXTRACT(DAY FROM startTime) AS startDay,EXTRACT(HOUR FROM startTime) AS startHour,EXTRACT(MINUTE FROM startTime) AS startMin,EXTRACT(YEAR FROM endTime) AS endyear,EXTRACT(MONTH FROM endTime) AS endMonth,EXTRACT(DAY FROM endTime) AS endDay,EXTRACT(HOUR FROM endTime) AS e`enter code here`ndHour,EXTRACT(MINUTE FROM endTime) AS endMin FROM ".$tablename." WHERE userId='".$_SESSION['userid']."' AND isActive=1";
$q = mysql_query($sql);
$i=1;
$eventData="{events: [";
if (!mysql_num_rows($q)) {
echo 'No records found';
}
else
{
while ($row = mysql_fetch_assoc($q)) {
$eventData.="{'id':".$row['eventId'].",";
$eventData.="'end': new Date(".$row['startyear'].",".$row['startMonth'].",".$row['startDay']."," .$row['startHour'].",".$row['startMin']."),";
$eventData.="'start': new Date(".$row['endyear'].",".$row['endMonth'].",".$row['endDay'].",".$row['endHour'].",".$row['endMin']."),";
$eventData.="'title':'".$row['enentName']."'},";
$i++;
}
}
$eventData= rtrim($eventData, ",");
$eventData.="]}";
echo json_decode($eventData);
}
我在firebug中检查php方法返回的数据如下:
{ events: [ {
'id': 2,
'end': new Date(2013, 4, 27, 18, 38),
'start': new Date(2013, 4, 27, 18, 38),
'title': 'test'
}, {
'id': 3,
'end': new Date(2013, 4, 23, 11, 0),
'start': new Date(2013, 4, 23, 14, 15),
'title': 'testing23'
}
] }
有谁能帮我吗?我是php新手。如有任何帮助,我们将不胜感激。
Php有一个名为json_encode的函数,它将处理json输出的生成。
这里有一个例子:
$o = array();
$o['events'] = array();
while ($row = mysql_fetch_assoc($q))
{
$event = array();
$event['id'] = $row['id'];
$event['start'] = "new Date(".$row['startyear'].",".$row['startMonth'].",".$row['startDay']."," .$row['startHour'].",".$row['startMin'].")";
$event['end'] = "new Date(".$row['endyear'].",".$row['endMonth'].",".$row['endDay'].",".$row['endHour'].",".$row['endMin'].")";
$event['title'] = $row['title'];
$o['events'][] = $event;
}
return json_encode($o);
javscript代码可能是这样的:
function returnJson()
{
var events = $.getJSON("../PHP/PhpAction.php?f=fetchCalendarEvent");
for (var i = 0; i < events.length; i++) {
var event = events[i];
event.start = eval(event.start);
event.end = eval(event.end);
events[i] = event;
}
return events;
}
您不能在json中格式化日期对象。一种选择是使用时间戳,并在解析json时进行转换。
如果你检查http://jsonlint.com/您将看到您的json出现错误。
您的语法是Javascript对象表示法,而不是json表示法。Javascript可以使用json.stringfy函数生成json。
我只是仔细检查了一下,如果你将javascript对象字符串化,就会发生以下转换:
var date = new Date(2013, 4, 26, 12);
var string = JSON.stringify(date);
console.log(string);
//output = 2013-05-26T10:00:00.000Z
console.log(JSON.parse(string));
//will again output 2013-05-26T10:00:00.000Z
因此,您可以使用JSON.stringify将日期对象转换为字符串。但不能将它们格式化为date对象。
在向浏览器发送AJAX数据时,应该添加适当的标头和MIME类型:
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
以下是一些关于如何使用发送到浏览器的数据的示例代码:
function requestData() {
$.ajax({
url: url,
dataType: 'json',
success: function(json) {
events = json.events;
useData(events);
},
error: function (xhr, status, error) {
alert('Status: ' + status +' Error: ' + error);
}
});
}
在您的情况下,错误消息说明了什么?
$data = preg_replace('@new Date'(([^')]*)')@', '"$1"', $data);
$data = json_decode($data, true);
结果:
新日期(2008,3,30,0,31,26(=>"2008,3,0,31,26">
相关文章:
- 转换 JSON 日期,不考虑时区
- 转换 JSON 文件
- 使用正则表达式转换 JSON 密钥值
- 如何通过javascript转换JSON中的DC2type:数组和DC2type中的JSON
- 转换json中的整数值
- 转换JSON架构格式
- 转换JSON "/日期(1404860400000)"到javascript日期
- 在js中转换json数组
- 检索原始日期值转换JSON.stringify
- Java脚本转换json数据
- 用JS转换JSON字符串
- 转换JSON数组的对象,从两个属性值创建新的属性
- 在AngularJs中转换JSON对象
- 需要转换JSON格式
- 转换JSON中的字符串
- 如何转换json数组的JS
- jQuery UI自动完成与预转换json url
- 使用递归转换json数据
- 如何在jquery中转换json格式的数组
- 如何转换json没有& quot;