Ajax结果为数组和JSON.parse错误

时间:2017-11-22 05:11:47

标签: php jquery ajax

我编写了一个ajax请求,数据作为数组返回,以便在时间戳中使用。

Ajax致电:

<script type="text/javascript">
$.ajaxSetup({ cache: false });
var consultdate;
var userid;
var cat;
var timezone;
var consultstart;
var consultend;
$('#consultdate').change(function() {
consultdate = $('#consultdate').val();
userid= '<?php echo $user_id;?>';
cat = '<?php echo $category;?>';
timezone = '<?php echo $time_zone;?>';
consultstart = '<?php echo $consultation_start;?>';
consultend = '<?php echo $consultation_end;?>';
//alert(consultdate);
$.ajax({
type: "POST",
url: 'user_date-time_qry.php',
cache: false,
dataType : "text",
data: {consultdate : consultdate, userid : userid, cat : cat, timezone : timezone, consultstart : consultstart, consultend: consultend },
success: function(data)
{
if (!$('input#consulttime').data("set")) {
alert(data);
var result = $.parseJSON(data);
$("input#consulttime").val('');
$('input#consulttime').prop("disabled", false);
$('input#consulttime').timepicker('remove').timepicker({'timeFormat': 'h:i A','disableTextInput': true, 'minTime':result[0] ,'maxTime': '<?php echo $consultation_end; ?>','step': 15,'disableTimeRanges':result[1]});
   }
},
error : function() {
alert("Error while loading data");
       }
   });
});
</script>

我希望var结果是一个json编码值的数组,在minTime中用作result[0]disableTimeRanges用作result[1]

user_date-time_qry.php的相关部分如下:

更新:user_date-time_qry.php

 $consultation_start = '"'.$consultation_start. '"';
    $consult_time_UTC = '['.implode(',',$consult_time_UTC).']'; 
    $prebooked_time_UTC = $consult_time_UTC ; //require format as ['8.30 AM', '8.45 AM'], ['12:15 PM', '12:30 PM']

    echo $result = array($consultation_start, $prebooked_time_UTC);
$result = array($consultation_start, $prebooked_time_UTC);
foreach ($result as $results) {
echo $results; 
}

在控制台中 获得价值“06:00 PM”[] “06:00 PM”是值1&amp;&amp; []是值2.如何在ajax响应中将其作为单独的值?

更新

由于我无法理解它,尝试使用2个ajax调用的另一个解决方案。非常感谢所有反馈。

4 个答案:

答案 0 :(得分:1)

更改此行

echo $result = array($consultation_start, $prebooked_time_UTC);

到这个

$result = array($consultation_start, $prebooked_time_UTC);
echo json_encode($result);

实际上,要在JSON中以PHP格式获取数据,您只需将所有数据存储在array中,然后使用json_encode函数进行转换。

答案 1 :(得分:0)

问题在于:

echo $result = array($consultation_start, $prebooked_time_UTC);

你无法回复array,而是必须使用json_encode,如:

echo json_encode(array($consultation_start, $prebooked_time_UTC));

并且不要将值包装在引号中,如:

'"'.$consultation_start. '"'

答案 2 :(得分:0)

简单方法: -

数据将作为JSON的字符串表示形式返回,并且您不会将其转换回JavaScript对象。将 dataType 设置为&#39; json &#39;让它自动转换。

  

例如: -

    $.ajax({
    type: "POST",
    url: 'user_date-time_qry.php',
    cache: false,
    dataType : "json",
    data: {consultdate : consultdate, userid : userid, cat : cat, timezone : timezone, consultstart : consultstart, consultend: consultend },
    success: function(data)
    {
    //ENTER CODE

    },
    error : function() {
           alert("Error while loading data");
       }

});

答案 3 :(得分:0)

使用这种方式的Anoter示例: -

user_date-time_qry.php 文件全部转换为 json 格式,使用以下示例将所有数组转换为 json格式

<?php
         $marks = array( 
            "mohammad" => array (
               "physics" => 35,
               "maths" => 30,   
               "chemistry" => 39
            ),

            "qadir" => array (
               "physics" => 30,
               "maths" => 32,
               "chemistry" => 29
            ),

            "zara" => array (
               "physics" => 31,
               "maths" => 22,
               "chemistry" => 39
            )
         );
         echo json_encode($marks);
      ?>

这些响应提供(所有数据转换为JSON格式): -

{ “穆罕默德”:{ “物理”:35, “数学”:30, “化学反应”:39}, “卡迪尔”:{ “物理”:30, “数学”:32, “化学反应”:29 }, “ZARA”:{ “物理”:31, “数学”:22, “化学反应”:39}}