以下代码未按预期工作,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;
}
我无法弄清楚这里有什么问题,请帮忙就此提出建议。感谢
答案 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分钟)后返回到客户端。