php - Ajax 和 JSON 响应问题

标签 php javascript jquery

我是一个漂亮的新手程序员,他正在制作一个应用程序,其中有多个 div,类为 jcontainer。每个 jcontainer 都有一个与之关联的 id,它对应于数据库中名为 apptid 的字段。在 Jquery 中,我每五秒向一个 PHP 页面发送一个 AJAX 请求,以检索数据库中名为 currtollocation 的字段(对应于 apptid),这发生了对于每个 jcontainer

这是我的代码:

HTML:

<div class='jcontainer' data-param='jcontainer_IDNUMBER'>

  <button class='checkIn' data-param='button_IDNUMBER'>Check In</button>
  <form method='post' class='myForm' action=''>
       <select name='locationSelect' class='locationSelect' data-param='location_IDNUMBER'>
            <option value='1'>Exam Room</option>
            <option value='2'>Exam Room 2</option>
            <option value='3'>X-Ray Room</option>
            <option value='1000'>Check Out</option>
       </select>
  </form>
  <div class='finished' style='color:#ff0000;'>Checked Out</div>

</div>

jQuery:

<script type="text/javascript">
$(document).ready(function() {

  setInterval(function(){

    $('.jcontainer').each(function() {
        var $e = $(this);
        var dataid = $e.data("param").split('_')[1] ;

        $.ajax({
            url: 'heartbeat.php',
            method: 'post',
            contentType: "application/json",
            dataType: "json",
            data: dataid,
            success: function(data){
                var msg = $.parseJSON(response);
                alert(msg);
            }
        });

    });
  },5000);

  //other code that I didn't post, because it's not really relevant, but can post if needed be

和php页面:

<?php

$hostname = 'localhost';

$username = '******';

$password = '*************';

$apptid = $_POST['dataid'];

$db = new PDO("mysql:host=$hostname;dbname=sv", $username, $password);
$statement = $db->prepare("SELECT currentlocation FROM schedule WHERE apptid = :apptid");
$statement->execute(array(':apptid' => $apptid));
$row = $statement->fetch();

$currentlocation = array('CurrentLocation' => $row['currentlocation']);
echo json_encode($currentlocation);

?>

问题是我无法从警报 (msg) 获得任何响应。为什么是这样?我检查了 Chrome Developer,没有出现错误。

最终目标是将当前位置编号记录在 jquery 变量中。 ex -> var currentLocation = Number

感谢所有帮助,如果您需要更多详细信息来解决问题,我很乐意发布!

最佳答案

这段代码:

success: function(data){
            var msg = $.parseJSON(response);
            alert(msg);
        }

应该阅读

success: function(data){
            var msg = $.parseJSON(data);
            alert(msg);
        }

因为 response 变量未声明且未定义,所以您应该在 parseJSON 方法中使用 data 变量,因为这是接收到的实际数据。希望这能为您解决问题。

关于php - Ajax 和 JSON 响应问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13485175/

相关文章:

javascript - 多个 Onclick 图像

javascript - For 循环被忽略

javascript - 如何清理 AJAX 回调

javascript - 当我的模式已经打开时阻止 "show"事件(脚本重新加载)

php - 正则表达式匹配字母、数字和空格,包括非 ASCII 字符

php - 在 Magento 中包含和使用 php 类的最佳方式

php - Magento 1.9.1 模型重写未执行

PHP 类成员和方法

javascript - Three.js Collada 示例 : "empty or non-existing file"

javascript - 如果不存在内容,则隐藏 Bootstrap 中的选项卡