【发布时间】:2015-04-09 18:39:01
【问题描述】:
我正在尝试在数据表中进行简单的 ajax 调用,该调用依赖于前一页表单中的 ID 后数组。我收到错误消息:
Invalid JSON Response
这告诉我我返回的 json 数组可能是空的,我感觉这与 POST 数据未发送到我的 php/sql 外部脚本有关,ajax 正在从该脚本请求数据。
我不知道如何测试它,因为我不知道如何在我的外部 php 页面的 URL 中包含 $_POST 数据以彻底触发脚本。
这是结果页面中我当前的数据表 init 和 php:
<?php
include_once('../functions.php');
sec_session_start();
print_r($_POST['post_id']); <-- making sure the post data made it this far
?>
<script type="text/javascript">
$(document).ready(function() {
var compTable = $('#compTab').dataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": "baddebt_ext_sql.php",
"type": "POST",
"dataType": 'json',
"data": {"post_id": $_POST['post_id']}
},
"Columns": [
{ "data": "provider_num" },
{ "data": "provider_name"},
{ "data": "261_total_bed_debts", "sClass": "rightAlign" },
{ "data": "271_medicare_bad_debts", "sClass": "rightAlign" },
{ "data": "281_non_medicare_bad_debts", "sClass": "rightAlign" },
{ "data": "1_cost_to_charge_ratio", "sClass": "rightAlign" },
{ "data": "291_cost_of_non_mcr_bad_debts", "sClass": "rightAlign" }
],
"scrollY": "600px",
"scrollCollapse": true,
"paging": false,
"order": [[ 2, "desc" ]],
"oLanguage": { "sSearch": "Filter All Fields By:" },
"Dom": '<"clear">lfrtipT',
"TableTools": {
"sSwfPath" : "../php/tabletools/swf/copy_csv_xls_pdf.swf" }
});
这是我的 SQL:
<?php
include_once('../link_costreport_2013.php');
if(isset($_POST['post_id'])){
$in = $_POST['post_id']; <-- THIS IS WHERE THE POST DATA IS SUPPOSED TO BE RECEIVED
}
$data = array();
foreach ($in as $id){
$query = $link->prepare("SELECT id,provider_num, provider_name, 261_total_bed_debts, 271_medicare_bad_debts, 281_non_medicare_bad_debts, 1_cost_to_charge_ratio, 291_cost_of_non_mcr_bad_debts
FROM `s10`
WHERE `id` = :id");
$query->bindParam(':id', $id, PDO::PARAM_INT);
$query->execute();
$results = $query->fetch(PDO::FETCH_ASSOC);
$results['261_total_bed_debts'] = "\$".number_format($results['261_total_bed_debts']);
$results['271_medicare_bad_debts'] = "\$".number_format($results['271_medicare_bad_debts']);
$results['281_non_medicare_bad_debts'] = "\$".number_format($results['281_non_medicare_bad_debts']);
$results['291_cost_of_non_mcr_bad_debts'] = "\$".number_format($results['291_cost_of_non_mcr_bad_debts']);
$results['provider_name'] = "<a id='".$results['id']."' data-toggle='modal' href='#provmodal' class='push'>".$results['provider_name']."</a>";
$data[] = $results;
}
echo json_encode($data);
如果有人知道我如何在不使用它应该发送的先前页面 $_POST 数据的情况下从该脚本获取我的 json 数组,那么我也很乐意发布它。
基本上,我只是想知道在通过我的数据表 ajax 查询和第二页的 sql 提供这个 ID 数组时是否缺少任何步骤。 ( post_id 数组的示例如下:
Array ( [0] => 299 [1] => 1555 [2] => 3539 ))
【问题讨论】:
-
您是否尝试将“dataType”:“json”与 ajax 请求一起使用?
-
@Nathan van der Werf 我刚刚添加了它,仍然收到
invalid json response没有检查 chrome 开发工具,似乎无法在网络选项卡中找到 ajax 响应 -
@Nathan van der Werf 从头开始找到了响应,但我无法理解。假设我的帖子数据,看起来 SQL 页面正在返回未定义的变量:编辑 - 未定义的变量 $in,这证实了我的想法
-
确切的错误是什么?
-
@Nathan van der Werf 我看到的两个是
Undefined variable $in,然后它使 foreach 循环无效,所以我也收到了一个错误。
标签: php jquery ajax json jquery-datatables