JavaScript - 向 PHP 元素发送 post 请求


JavaScript - Sending a post request to a PHP element

        var table = $('#accessRequest').DataTable({
            "dom": 'Blfrtip',
            "ajax": "Editor-PHP-1.5.1/php/editor-serverside.php",
            "columns": [
                {   //special column for detail view
                    "className": 'details-control',
                    "orderable": false,
                    "data": null,
                    "defaultContent": ''
                },
                {   data: "DT_RowId",
                    render: function ( data ) {
                        return data.replace( 'row_', '' );
                    }
                },
                {   data: null,
                    render: function ( data, type, row ) {
                        // Combine the first and last names into a single table field
                        return data.first+' '+data.last;
                    }
                },
                { "data": "phone" },
                { "data": "responsibleParty" },
                { "data": "email" },
                { "data": "building" },
                { "data": "typeOfWork" },
                { "data": "startTime" },
                { "data": "endTime" },
                { "data": "description" },
                { "data": "dockNeeded" },
                { "data": "numPeople" },
                { "data": "numTrucks" },
                { "data": "requestPlaced" },
                { "data": "updatedAt" },
                { "data": "approved" },
                { "data": "approvedBy" },
                { "data": "approvedAt" },
                { "data": null }
            ],
            "aoColumnDefs": [
                {
                    "aTargets": [-1],
                    "mData": null,
                    "mRender": function (data, type, full) {
                    return '<button id="ApprovalButton" onclick="$.post(''extra.php'', ''approve_request'')" action="extra.php" method="post"> Process </button>';
                 //Send post request
                    }
                }
            ],
            "order": [[1, 'asc']],
            select: true,
            buttons: [
                { extend: "create", editor: editor },
                { extend: "edit",   editor: editor },
                { extend: "remove", editor: editor }
            ]
        });

有一串代码(上面(,我正在创建一个包含信息的表。在显示"//发送帖子请求"的行上,我正在尝试使它正上方的按钮将帖子请求发送到一个名为"extra.php"的单独文件,尽管我做了什么,但我无法做到这一点。

我尝试在输入表单中使用提交按钮,但这不起作用。我尝试了很多不同的东西,但我似乎无法让它工作。任何帮助将不胜感激。

已经有一个文件(extra.php(能够接收发布请求并在收到请求后对其执行操作。我正在尝试在页面上的HTML中创建一个按钮,单击该按钮时会将"approve_request"发布到文件"额外.php">

抱歉,我是编码和这个网站的新手,可能有一些简单的事情我没有做。

    <!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
header('Access-Control-Allow-Origin: *'); 
$id = intval($_POST['id']);
$con = mysql_connect("RequestAccess.db.10160035.hostedresource.com","RequestAccess","br@6HeCher");
if (!$con){
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("RequestAccess", $con);
//if action sent is approve set request as apporved
if(isset($_POST['approve_request'])){
    $sql = "UPDATE AccessRequests
            SET approved='1', approvedAt=current_timestamp
            WHERE AccessID='" . $_POST['approve_request']."'";
    $results = mysql_query($sql);
}
//else action sent must be for child rows so populate child row
else {
}

这是负责处理发布请求的部分(如果有帮助(。

我认为你错过了这个:

"processing": true,
"serverSide": true,

DataTabele 需要这些指令来知道您希望对 php 脚本执行请求。

也许还有这个:

"ajax": "your php.php"

立即从这篇文章中删除您的数据库凭据。

后端脚本不应有任何与之关联的 HTML。如果已输出到 DOM 的标头,则无法返回标头。

文档:http://php.net/manual/en/function.header.php

对于数据表,您需要从后端脚本返回 json。它应该看起来像这样。假设您的 SQL 和架构是正确的。

<?php
//Use PDO this is deprecated.
$con = mysql_connect("stuff","things","password");
if (!$con){
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("RequestAccess", $con);
$id = (int) $_POST['id'];
if(isset($_POST['approve_request'])){
    $sql = "
    UPDATE AccessRequests
    SET approved='1', approvedAt=current_timestamp -- this may need to be in quotes.
    WHERE AccessID='{$_POST['approve_request']}' 
    ";
    $results = mysql_query($sql);
} else {
    $results = null;
}
//Set headers 
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
//Output data.
echo json_encode($results);

我使用一个程序来调试我的 ajax 请求。Firebug是一个不错的选择。

我强烈建议先学习一个框架(护栏很好(。

http://www.sitepoint.com/best-php-framework-2015-sitepoint-survey-results/