带有JSON返回的AJAX请求没有响应我的预期行为

时间:2016-01-22 15:26:07

标签: javascript php jquery json ajax

我正在尝试编写一个ajax调用来检查我的数据库并在发现更改时更新div。

我对JavaScript相对较新,对JSON事物更新。

我认为问题在于我如何返回JSON数组,或者如何在if语句中使用它,但我不确定如何正确地执行它。 我得出了这个结论,基于我从成功函数"连接并执行PHP页面返回控制台日志的事实......",但不是"更新票证页面...& #34;日志中。

这是我的JavaScript:

function checkUpdates()
{
  $.ajax({
    type: "POST",
    url: 'ajax/checkDB.php',
    data: {},
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data) {
      console.log('Connected and executed PHP page...');
      if (data.hasChanged == true) {
        console.log('Updated Tickets Page...');
        $("#contents").load("dynamic/tickets.php");
        $("#contents").fadeTo("fast", 1);
      }
    }
  });
}

$(document).ready(function() {
  setInterval("checkUpdates()", 3000);  // Calls the function every 3 seconds
});

这是我的PHP(checkDB.php,在ajax请求中调用),如果重要的话。

<?php
        include("../static/config.php");
        session_start();

        header("Content-Type: text/json");

        $result = mysqli_query($con,"SELECT notify FROM tickets WHERE notify='0'");
        $row_cnt = mysqli_num_rows($result);

        if($row_cnt > 0) {
            echo json_encode(array('hasChanged' => 'true'));
            mysqli_query($con,"UPDATE tickets SET notify='1' WHERE notify='0'");
        } else {
            echo json_encode(array('hasChanged' => 'false'));
        }


?>

3 个答案:

答案 0 :(得分:2)

你有拼写错误error。您可以更改php代码而不使用字符串或更改if条件。

//changes made here
if (data.hasChanged == "true") {

<强> PHP

if($row_cnt > 0) {
            //here you are having string "true"
            echo json_encode(array('hasChanged' => 'true'));
            mysqli_query($con,"UPDATE tickets SET notify='1' WHERE notify='0'");
        } else {
            echo json_encode(array('hasChanged' => 'false'));
        }

答案 1 :(得分:2)

在剪切的代码中,您正在检查字符串SetDeviceProperty(ConnectedScanner, 3096, 1) SetDeviceProperty(ConnectedScanner, 6146, 2) SetDeviceProperty(ConnectedScanner, 6147, 300) SetDeviceProperty(ConnectedScanner, 6148, 300) SetDeviceProperty(ConnectedScanner, 6154, -50) SetDeviceProperty(ConnectedScanner, 6155, -50) 是否等于布尔值'true'

您有两种选择:

使用

从php返回一个布尔值
true

echo json_encode(array('hasChanged' => true));

或者您可以使用以下命令检查javascript中的字符串:

echo json_encode(array('hasChanged' => false));

答案 2 :(得分:0)

您应该以适当的数据类型返回数据。

当您使用问题中的代码对json进行编码时,'true'不是布尔值,因此您的javascript无法将'hasChanged'属性与布尔值进行比较。

你可以试试下面的代码吗?这将使'hasChanged'属性成为布尔值。

echo json_encode(array('hasChanged' => true));