我正在尝试解析我在javascript(jquery)中使用ajax调用发送的php中的JSON。
javascript代码:
var editSchedule_data = {
'action' : 'editSchedule',
'eventid' : $('#eventid').val(),
'pixels_per_minute' :$('#pixels_per_minute').val(),
artists: {
artist: []
}
}
$('.artist').each(function(index) {
var id=$(this).attr('id');
id=id.split('_');
editSchedule_data.artists.artist.push({
'artistid' : id[0],
'stageid' : id[1],
'left' : $(this).offset().left-$('.artists').offset().left,
'width' : $(this).width()
});
});
$.ajax({
type : "POST",
url : "callback.php",
data : editSchedule_data,
dataType : "json",
async : true,
success : function(json) {
if(json.success) {
showSucces(json.message);
}
else{
showError(json.message);
}
},
error: function(error){
alert("An error occurred: "+error.message);
}
});
php-code:
$clean = sanitize($_POST);
echo(json_encode($clean['artists']),
json_last_error());
echo(json_decode($clean['artists']),
json_last_error());
我的输出: 编码:
{"artist":[{"artistid":"4","stageid":"3","left":"360","width":"240"},{"artistid":"3","stageid":"4","left":"120","width":"240"},{"artistid":"1","stageid":"5","left":"120","width":"180"},{"artistid":"2","stageid":"5","left":"300","width":"120"},{"artistid":"5","stageid":"6","left":"480","width":"120"}]}
0
解码:
0
有人能告诉我如何使解码功能起作用吗?
答案 0 :(得分:2)
你为什么要在那里使用json_decode?你已经在$ _POST中将数据作为数组。这就是为什么json_decode失败并返回NULL ...它期望一个正确格式化的字符串,你传递一个数组。 如果dataType:“json”参数让您感到困惑,它会指定您希望从服务器返回的数据类型,而不是您要发送的数据类型。 您只需处理来自$ _POST的数据,创建响应,在其上应用json_encode并回显结果字符串。
答案 1 :(得分:1)
json_decode($clean['artists']);
正在给你一个对象,这就是为什么回显它没有显示任何东西。尝试print_r()
查看对象内部的内容:
// Will show you the whole PHP object
print_r( json_decode( $clean['artists'] ) );
答案 2 :(得分:1)
如果你使用它会好得多。从数据库中提取数据时
$.getJSON("callback.php",function(json){
$('#div to update').html(json[0].databasefield); // 0 if query is only 1 result
}); // when there are many of them use for loop
在你的php上你应该使用json_encode(数组值)编码它;