簡體   English   中英

通過datatables ajax請求發送POST數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM