意外的JSON行为

时间:2019-02-12 09:36:05

标签: javascript php json wordpress

我正在构建一个WordPress插件。 PHP脚本发送JSON,JavaScript接收它。有时,即使我确定它应该接收数据,js也会收到一个空的JSON。如果我放置一个空的回显(echo ' ';),它可以解决我的问题,并且可以正确接收数据。 收件人:

jQuery.ajax({
        url: url + "get_bookings.php",
        method: "POST",
        data: {
            week: t,
            year: e
        }
    }).done(function(w) {
         w = JSON.parse(w);
        fetchTableData(w)
    })

发件人:

echo ' ';
.
. // Code here.
echo json_encode( $query );

我找不到原因。有时,如果没有空的echo,它就可以正常工作。

编辑:感谢您的回答,exit没有帮助。 我检查了网络面板,它两次请求get_bookings.php。我在网址末尾加了一个斜杠,并且效果很好。

url: url + "get_bookings.php/",

2 个答案:

答案 0 :(得分:1)

首先,删除此行:

echo ' ';

Id建议首先通过测试$query的结果值来调试PHP脚本:

print_r($query);

如果该值间歇地产生为空字符串,请确保对此进行测试,并在必要时返回一个空的JSON对象。

if (empty($query)) {
  $query = (Object)[];
}
echo json_encode($query);

答案 1 :(得分:0)

请删除json_encode中的第二个参数true,并且还会出现标题已发送错误的问题。 您不需要在ajax返回中的json编码标头。只需添加json_encode即可。