【问题标题】:PHP json_encode add a 1 to the end of the stringPHP json_encode 在字符串末尾添加一个 1
【发布时间】:2015-03-25 18:20:38
【问题描述】:

我在整个项目中使用 json_encode 没有问题,除了一个实例。

我从一个页面进行 ajax 调用,就像我在其他页面中所做的那样,生成的 json 出于某种奇怪的原因将 1 附加到字符串的末尾。

我的返回字符串是这样的

{
"overtime": "yes"
}1

这可能是什么原因造成的?我已经从字面上注释了返回此字符串的类中的所有内容,并且我只有以下代码。

$reservation = ['overtime' => 'yes'];
return json_encode($reservation, JSON_PRETTY_PRINT);

我的 ajax 请求如下所示

    $.ajax({
        type: 'POST',
        url: "{{ URL::action('Controllers\\PurchasesController@calculateReservation') }}",
        data: { 'arrive' : arrive, 'depart' : depart},
        dataType: 'json',
        success: function(response) {
            alert(response);
        }
    });

警报不会触发,也不会显示任何内容,因为 json 无效,字符串末尾附加了 1。

【问题讨论】:

  • 根据我的经验,我通常会echo 回复,而不是return。尝试这样做,如有必要,之后立即致电die()。这有帮助吗?
  • 哇。是的,成功了,谢谢!很奇怪,因为我只是简单地在我的项目的其余部分返回 json_encode,没有任何问题。

标签: javascript php jquery ajax json


【解决方案1】:

您应该 echo 来自控制器的响应,而不是返回它:

echo json_encode($reservation, JSON_PRETTY_PRINT);

在某些情况下(例如使用WordPress),也需要在之后调用die()

【讨论】:

  • 在我的情况下,我在json_encode 的末尾得到一个 0,因为我忘了打电话给 die()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 2011-08-27
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多