2016-01-22 90 views
2

我正在尝试编写一个ajax调用,用于检查我的数据库并在发现更改时更新div。使用JSON返回的AJAX请求没有响应我的预期行为

我相对较新的JavaScript,甚至更新的JSON的东西。

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

这里是我的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')); 
     } 


?> 
+1

做'console.log(data)'你在干什么得到些什么?在'“true”中使用引号' –

+0

检查浏览器控制台(F12) –

+0

中的返回值,在console.log('Connected and executed PHP page ...')后放置一个'console.log(data)'。我猜你需要解析从服务器返回的json。它可能是一个字符串或...你需要的数据可以在'data.responseText'中找到 –

回答

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')); 
     } 
0

你应该在适当的数据类型返回数据。

当你用你的问题中的代码对json进行编码时,'true'不是一个布尔值,所以你的javascript无法将'hasChanged'属性作为布尔值进行比较。

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

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

中的代码要检查如果字符串'true'等于布尔true的文档片断。

你有两个选择:

回报从PHP的布尔与

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

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

,或者你可以在JavaScript与查询字符串:

if (data.hasChanged == "true") {