我试图在数据表中进行简单的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);
如果有人知道如何从这个脚本中获取我的json数组而不使用它应该发送的前一页$ _POST数据,那么我也很乐意发布它。
基本上我只是想知道在通过我的datatables ajax查询提供这个ID数组并进入第二页的sql时,是否有任何我缺少的步骤。 (post_id数组的一个例子是这样的:
Array ( [0] => 299 [1] => 1555 [2] => 3539 )
)
答案 0 :(得分:0)
诊断此问题非常简单。只需单击鼠标右键,然后检查元素&#34;然后选择“网络”选项卡。像在界面中一样切换事务。您将在网络标签中看到新的网络交易。
单击该新网络事务 - 它应该具有您在ajax调用中定义的地址。标题将显示您通过post发送的变量,响应将显示服务器返回的内容。
如果您将有效负载粘贴到jslint.com并对其进行评估,则该错误表示您的响应将失败。造成这种失败的原因将需要比您提供的更多细节。
在您使用的ajax示例中,&#34;数据&#34;是发送到服务器的数据。要在该帖子中发送大量数据,我将您的输入封装在表单标记中,然后在该表单上执行$ .serialize或$ .serializeArray。然后,您可以通过data属性将该序列化数据作为变量发送,并将其发布到您的服务器。从那里,只需通过PHP处理结果的变量。
请更新您的代码以使用1.10 API变量。在将来的版本中将弃用对旧版本的支持。