2014-09-22 69 views
0

试图运行jQuery和JSON的预定警报。 php文件按预期工作并返回正确的JSON编码数组。 jquery的工作原理并在不检查JSON数据时每隔一分钟弹出一个对话框。但是当我添加JSON代码时,它停止工作,没有任何反应。JavaScript if/else语句的JSON数据

声明:我知道我应该不再使用mysql,而应该使用准备好的语句,而且我将在此项目完成后立即开始。

编辑我修正了错字,并将$ getJSON更改为$ .getJSON,并发布了php脚本结果。

的jQuery:

$(function() { 

setInterval(function() { 

    $.getJSON('includes/popup.php', function(data) { 

     if(data.firstName == "None") { 

      $("<div>No Callback</div>").dialog(); 

     } 
     else { 

      $("<div>Yes Callback</div>").dialog(); 

     } 

    }) 

}, 1000 * 60 * 1); 

}); 

popup.php

<?php 

$nowdate = date("Y-m-d"); 
$nowtime = date("H:i"); 

$alertSql = "SELECT id, compid, cbdate, cbtime, firstName, lastName FROM contacts WHERE cbdate = '$nowdate' ORDER BY lastName desc"; 
$alertResult = mysql_query($alertSql, $link); 

while($alertRow = mysql_fetch_array($alertResult)){ 

    $cbtime = date("H:i", strtotime($alertRow['cbtime'])); 

    if($cbtime == $nowtime) { 

     $final_array[] = array("firstName" => $alertRow['firstName'], "lastName" =>     $alertRow['lastName'], "cbdate" => $alertRow['cbdate'], "cbtime" => $alertRow['cbtime']); 

     echo json_encode($final_array); 
    } 
    else { 

     $final_array[] = array("firstName" => "None"); 

     echo json_encode($final_array); 

    } 

}; 

?> 

PHP结果:

[{"firstName":"None"}] 

or 

[{"firstName":"Mickey","lastName":"Mouse","cbdate":"2014-09-22","cbtime":"15:36:00"}] 
+1

你可以尝试'的console.log(数据);'在回调函数和发表您的结果 – 2014-09-22 15:18:10

+0

是什么'data'看起来像在回应?你能粘贴确切的PHP响应吗? – Scott 2014-09-22 15:18:57

回答

2

有一个错字:

$getJSON(...) 

应该

$.getJSON(...) 

Javascript console应该提醒您未定义功能。

+0

哦!我不敢相信我没有看到!无论如何,我修好了它,它仍然不会产生对话框。它应该每分钟产生一个“无回叫”,但没有任何事情发生。 – 2014-09-22 15:46:38

2

这条线:

$getJSON('includes/popup.php', function(data) { 

应;

$.getJSON('includes/popup.php', function(data) { 
+0

哦!我不敢相信我没有看到!无论如何,我修好了它,它仍然不会产生对话框。它应该每分钟产生一个“No Callback”,但没有任何事情发生 – 2014-09-22 15:40:39

0

您必须在使用它之前将json转换为javascript对象。你的代码更改为下面的代码片段:

$.getJSON('includes/popup.php', function(data) { 
    var myobj = jQuery.parseJSON(data); 
    if(myobj.firstName == "None") { 

    $("<div>No Callback</div>").dialog(); 

    } 
    else { 

    $("<div>Yes Callback</div>").dialog(); 

    } 
}) 
+0

不,getJSON()在将数据传递到回调函数之前解析数据。例如,请参阅[docs](http://api.jquery.com/jquery.getjson/)中不做任何明确分析的示例。 – 2014-09-22 15:26:11

+0

很好:) thx为更正 – user2488184 2014-09-22 15:42:00