Php JSON查询的问题

Php JSON查询的问题,php,ajax,json,Php,Ajax,Json,我使用json onclick脚本来触发php函数。 我使用以下命令调用php函数: $('#dtable').on('click', '[name=option3]', function () { var select = $(this); var id = select.attr('id'); $.post('index.php/stop/'+id+'', function(json) { if (json && json.st

我使用json onclick脚本来触发php函数。 我使用以下命令调用php函数:

$('#dtable').on('click', '[name=option3]', function () {
    var select = $(this);
    var id = select.attr('id');
    $.post('index.php/stop/'+id+'', function(json) {
            if (json && json.status) {
                $("#failure").show().delay(2500).fadeOut(1500);
            } else {
                $("#success").show().delay(2500).fadeOut(1500);
            }
        }
    );
} );
如果该项是触发器,则调用my index.php中的slim属性

$admin->slim->post('/stop/:action', function($action) use ($admin) {
    $admin->slim->contentType('application/json');
    echo json_encode($admin->cont->Stop($action));
在此之后,他触发函数

function Stop($action) {
    $port = $action;
    $connection = @fsockopen($this->cfg->base_host, $port, $errno, $errstr, 1);
    if (!$connection) {
        return false;
    } else {
        $pid = $this->db->query("SELECT pid FROM testdb WHERE port='" . $port . "'", SQL_ALL, SQL_ASSOC);
        if ($pid == "") {
            return false;
        } else {
                  ......
                }
            }
        }
    }
}
唯一的问题是json的答案总是成功 但函数不会返回true或false

function Stop($action) {
    $port = $action;
    $connection = @fsockopen($this->cfg->base_host, $port, $errno, $errstr, 1);
    if (!$connection) {
        return false;
    } else {
        $pid = $this->db->query("SELECT pid FROM testdb WHERE port='" . $port . "'", SQL_ALL, SQL_ASSOC);
        if ($pid == "") {
            return false;
        } else {
                  ......
                }
            }
        }
    }
}
有人知道我做错了什么,或者有人能给我一些建议吗

  • 添加了有关该函数的更多信息

    • 使用
      警报(json)
      if(json&&json.status)
      之前查看您得到了什么。我确信
      json
      不是您所期望的。它似乎
      json==false
      (因为函数
      Stop()
      返回
      false
      )没有
      json。status
      -或者你的
      Stop
      函数的其余部分返回更多的内容。

      你必须用
      json
      包装你的响应,然后回显它。我没有看到任何回显当我用slim进行查询时,我使用回显json\u encode($admin->cont->Stop($action));“唯一的问题是,json的答案总是成功的,但函数不会返回true或false”这是什么意思?您的意思是在
      $.post('index.php/stop/'+id+''处的回调函数中返回的是函数(json){
      不包含任何json?或者该函数没有按您希望的那样工作?我尝试做的是调用以触发该函数。调用中的ID是一个端口号,这在页面中会更改几次。如果函数完成,则我希望显示一条成功消息。如果函数失败,则我希望显示一条f在函数中,我输入了一对返回false和一个返回true,并输入了警报(json);我确实收到了消息false,这是什么意思?没有json.status?很抱歉,我看到没有像您所说的状态。如果我更改代码以返回true,json警报将显示true,消息显示为false时显示相同的消息。我已放置警报(json.status);在同一页上,我收到一条未定义的消息。此时此刻,我不知道我必须在哪里找到问题。我认为您期望过高。
      json
      仅包括通过
      echo json_encode(…);
      发送的数据,仅此而已(因此在所有示例中,它被命名为“数据”,而不是“json”)。如果您在
      json.status
      中期望json连接状态,那么您就错了。现在您只能使用
      if(json){…}else{…}