繁体   English   中英

将数据从Ajax发布到php脚本

[英]Posting data from ajax to a php script

问题

我有一个onclick Jquery函数,它将在被单击的表行的第一个单元格中返回值。 然后,我尝试使用ajax type: 'POST'将此值传递给php脚本type: 'POST' ,然后将使用该值进行数据库查询以进行比较。 由于某些原因,$ _ POST始终为空。 Ajax不会返回任何错误,但是我无法在服务器端接收数组的值。 任何帮助表示赞赏。

jQuery的

$('tr.profileTableClick').click(function() {
var tableData = $(this).find('td:nth-child(1)').map(function() {
    return $(this).text();
}).get();

$.ajax({
    url: 'selectAnswers.php',
    type: 'POST',
    data: {
        'id': tableData
    },
    dataType: 'text',
    error: function() {
        console.log('Error in ajax request');
    },
    success: function(data) {
        console.log('Success of ajax request');
        console.log(data);
    }
});

的PHP

这是selectAnswers.php文件:

<?php

$id = $_POST['id'][0];

try {
    $conn = new PDO(
        "mysql:host=$servername;dbname=$dbname",
        $username,
        $password
    );

    $conn->setAttribute(
        PDO::ATTR_ERRMODE,
        PDO::ERRMODE_EXCEPTION
    );

    $stmt = $conn->prepare(
        "SELECT
            quality_of_service,
            self_improvement,
            personal_behavior,
            organization_rules_commitment,
            team_work,
            appearance, work_with_high_responsibility,
            loyalty_to_organization,
            punctuality_on_work,
            office_maintaining, areas_of_improvement,
            points_of_weakness,
            points_of_strength
        FROM appraisals_table
        WHERE Apr_Id = :id"
    );

    $stmt->bindValue(
        ':id',
        $id,
        PDO::PARAM_INT
    );

    $stmt->execute();

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $ans1 = $row['quality_of_service'];
        $ans2 = $row['self_improvement'];
        $ans3 = $row['personal_behavior'];
        $ans4 = $row['organization_rules_commitment'];
        $ans5 = $row['team_work'];
        $ans6 = $row['appearance'];
        $ans7 = $row['work_with_high_responsibility'];
        $ans8 = $row['loyalty_to_organization'];
        $ans9 = $row['punctuality_on_work'];
        $ans10 = $row['office_maintaining'];
        $ans11 = $row['areas_of_improvement'];
        $ans12 = $row['points_of_weakness'];
        $ans13 = $row['points_of_strength'];
    }
} catch(PDOException $e) {
    echo 'Error: '. $e->getMessage();
}

$conn = null;

控制台日志

更改任一js:

var tableData = $(this).find("td:nth-child(1)").text();

或php:

$id = (int)$_POST['id'][0]

像这样使用新的javascript的FormData API。

var formdata = new FormData();
formdata.append('id', tableData);

$.ajax({
    url: 'selectAnswers.php', 
    type: 'POST', 
    data: formdata, 
    dataType: 'text', 
    error: function(){ 
        console.log("Error in ajax request"); 
    }, 
    success: function(data) { 
        console.log("Success of ajax request"); 
        console.log(data); 
    } 
}); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM