[英]Sending POST data through datatables ajax request
我試圖在數據表中進行一個簡單的ajax調用,該調用依賴於上一頁表格中ID的后置數組。 我收到錯誤消息:
Invalid JSON Response
這告訴我返回的json數組可能是空的,或者與POST數據沒有發送到我的php / sql外部腳本有關,而ajax從php / sql外部腳本請求數據。
我不確定如何測試它,因為我不知道如何在外部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 )
)
診斷此問題非常容易。 只需右鍵單擊並“檢查元素”,然后選擇“網絡”選項卡。 就像在界面中一樣切換事務。 您會在“網絡”標簽中看到一個新的網絡交易。
單擊該新的網絡事務-它應該具有您在ajax調用中定義的地址。 標頭將顯示您通過帖子發送的變量,響應將顯示服務器返回的內容。
該錯誤表明如果將有效負載粘貼到jslint.com並進行評估,您的響應將失敗。 導致此故障的原因將需要比您提供的更多的詳細信息。
在您使用的ajax示例中,“數據”是要發送到服務器的數據。 要在該帖子中發送大量數據,我會將您的輸入包含在一個表單標簽中,然后在該表單上執行$ .serialize或$ .serializeArray。 然后,您可以通過data屬性將該序列化的數據作為變量發送,並將其發布到服務器上。 從那里,只需通過PHP處理生成的post變量。
請確實更新代碼以使用1.10 API變量。 在將來的版本中將不再支持舊版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.