php echo没有按预期工作

时间:2016-07-04 13:53:16

标签: php

以下代码未按预期工作,echo语句永远不会向客户端返回任何响应并且它是挂起的。

        $query = "INSERT INTO Tasks (ProjectID,Title,Start,End,PercentComplete,ParentID,OrderID,Summary,Expanded,LastUpdate)
        VALUES($project_Id, '$title','$start','$end','$percentComplete',$parentID,'$orderID','$summary','$expanded',NOW())";
        $result = mysqli_query($con, $query);

        if ($result) {
            $last_id = mysqli_insert_id($con);
            echo json_encode(array(ID => $last_id, Title => $title, Start => $start, End => $end, percentComplete => $percentComplete));
        }

但是,如果我按如下方式添加一行echo,则可以在客户端接收echo语句。

        $query = "INSERT INTO Tasks (ProjectID,Title,Start,End,PercentComplete,ParentID,OrderID,Summary,Expanded,LastUpdate)
        VALUES($project_Id, '$title','$start','$end','$percentComplete',$parentID,'$orderID','$summary','$expanded',NOW())";
        $result = mysqli_query($con, $query);

        if ($result) {
            $last_id = mysqli_insert_id($con);
            echo json_encode(array(ID => $last_id, Title => $title, Start => $start, End => $end, percentComplete => $percentComplete));
            echo 1;
        }

我无法弄清楚这里有什么问题,请帮忙就此提出建议。感谢

3 个答案:

答案 0 :(得分:0)

您将数组键定义为常量。他们需要被引用。看看下面的数组定义。

$array = array(
    'id' => $id,
    'title' => $title,
);

请注意,我使用'来引用我的密钥?

您可以通过启用错误报告来识别您的问题:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

然后会显示错误:

  

注意:未定义的常量' ...'

深度

为了更好地解释一下您的语法出了什么问题,首先需要了解constants是什么。常量与变量类似。唯一的区别是它们必须在脚本的顶部定义,并且值不能更改(或者更好地说是不变的)。

要定义您将使用的常量:

define('constantname', 'constantvalue');

然而,为了使你的代码工作,你不需要常量而是字符串。你想要的是将数组键定义为字符串。

'key' => 'value'

我希望这能解决您的问题。

简而言之

你的回音应该是

$json = json_encode(array(
    'ID' => $last_id,
    'Title' => $title,
    'Start' => $start,
    'End' => $end,
    'percentComplete' => $percentComplete
));
echo $json;

答案 1 :(得分:0)

尝试在控制器中设置输出标头(在输出发送之前,即在json_encode之前):

$this->output->set_header('Content-Type: application/json; charset=utf-8');

正如前面的回答中所提到的,在数组键周围使用引号。

答案 2 :(得分:0)

事实证明,javascript中存在一个启动请求的for循环。 for循环发送了很多$ _POST,并且响应实际上在很长一段时间(~5分钟)后返回到客户端。