javascript - POST Ajax 请求

标签 javascript php jquery ajax post

我正在处理一个最初不是我开发的旧项目。我需要发出一个 Ajax 请求,以便将字段中包含的值(稍后详细介绍)发送到 php 脚本,然后该脚本将它们的值返回到正确的 td 中。 这是 JavaScript/jQuery 代码。

$(function () 
{   

    $('form').on('submit', function (e) 
    {
        e.preventDefault();
        $.ajax
        ({
            type: 'post',
            url: 'envoi_dispo_semaine.php',
            data: $('form').serialize(),
            success: function () 
            {
                alert('Le planning a été mis à jour.');
            }
        });
    });

    jQuery(document).ready(function date()
    {
        Date.prototype.getWeek = function() {
            var onejan = new Date(this.getFullYear(),0,1);
            var today = new Date(this.getFullYear(),this.getMonth(),this.getDate());
            var dayOfYear = ((today - onejan +1)/86400000);
            return Math.ceil(dayOfYear/7)
        };

        var today = new Date();
        var t = today.getWeek();
    })

    jQuery(document).ready(function()
    {

        jDispo  = {};
        jCharge = {};
        jSolde  = {};
        var d = 0;
        var c = 0;
        var s = 0;

        jQuery('.DISPO').each(function()
        {
            jDispo[d] = jQuery(this).val();
            d++;
        });

        jQuery(".CHARGE").change(function()
        {
            var totalCharge = 0;
            if(jQuery(".CHARGE").length > 0)
            {
                jQuery(".CHARGE").each(function() 
                {
                    jCharge[c] = jQuery(this).val();
                    c++;
                    totalCharge = totalCharge + jQuery(this).val(); 
                });

            }
            jQuery('.SOLDE').each(function()
            {
                jSolde[s] = jQuery(this).val();
                $.ajax(
                {
                    type:'post',
                    url:'check_charge.php',
                    data:{charge : jCharge[s],solde : jSolde[s],dispo : jDispo[s],action:"update_site"},
                    success: function() 
                    {
                        $('jSolde[s]').empty();
                        $('jSolde[s]').append();
                        $('.ajax').html($('.ajax input').val());
                        $('.ajax').removeClass('ajax');
                    }
                });
                s++;
            });
        });
    });

    $(document).ready(function()
    {
        if ($("#tab_projets table tbody tr:eq(2) td:contains('-')").length) 
        {
            $("#tab_projets table tbody tr:eq(2) td:contains('-')").css('background', '#CCFF00');
            $("#tab_projets table tbody tr:eq(2) td:contains('-')").css('font-color', 'black');
        }
        if ($("#tab_projets table tbody tr:eq(5) td:contains('-')").length) 
        {
            $("#tab_projets table tbody tr:eq(5) td:contains('-')").css('background', '#CCFF00');
            $("#tab_projets table tbody tr:eq(5) td:contains('-')").css('font-color', 'black');
        }
        if ($("#tab_projets table tbody tr:eq(8) td:contains('-')").length) 
        {
            $("#tab_projets table tbody tr:eq(8) td:contains('-')").css('background', '#CCFF00');
            $("#tab_projets table tbody tr:eq(8) td:contains('-')").css('font-color', 'black');
        }
    });
});

这里是 check_charges.php:

<?php
   include('connexion_db.php');

   $charge   = $_POST['charge'];
   $dispo    = $_POST['dispo'];
   $solde    = $_POST['solde']; //I'll need this one later on.

$res = $dispo - $charge;
echo $res;
?>

我还有一些允许我生成表格的 php 代码(它与 javascript 在同一个文件中):

<thead>
            <?php
                echo "  <td colspan=2>Semaine n°</td>
                        <td>Retard</td>";
                for ($i=$numerosemaine; $i <= $numerosemaine + $longueurAff; $i++) 
                {
                    echo "<form action=\"envoi_dispo_semaine.php\" method=\"post\">
                            <td>
                                <input type=\"hidden\" name=\"semaine_id\" value=\"".$i."\" />".$i."</td>";
                }

            ?>
            </thead>
            <tbody>
            <?php 

                foreach($users as &$myUser)
                {
                        echo "  <tr class=".$myUser.">
                                    <td width=66% rowspan=3><input type=\"hidden\" name=\"login\" value=\"".$myUser."\" onblur=\"updateCharge\"/>".$myUser."</td>
                                    <td width=34%>Disponibilité</td>
                                    <td rowspan=3></td>
                            ";
                                    for ($i=$numerosemaine; $i <= $numerosemaine + $longueurAff; $i++) 
                                    {
                                        $req = "
                                                SELECT Nb_max_jours FROM Dispo_par_semaine WHERE login = '".$myUser."' AND semaine_id = ".$i;
                                        $query = requete_is_plancharges($req);
                                        $row = mysql_fetch_row($query);
                                        $affichageDispo = $row[0];
                                        if ($affichageDispo == "") 
                                        {
                                            $affichageDispo = 3;
                                        }
                                        echo "  
                                                <td>
                                                    <input class=\"DISPO\" type=\"number\" name=\"disponibilite[]\" value=".$affichageDispo." min=\"0\" max=\"5\" step=\"0.5\" class=\"input\"/>
                                                </td>
                                            ";
                                    }
                                    echo"
                                </tr>
                                <tr class=".$myUser.">
                                    <td width=34%>Charge</td>";
                                    for ($i=$numerosemaine; $i <= $numerosemaine + $longueurAff; $i++) 
                                    { 
                                        $reqTache = "
                                            SELECT tache_id 
                                            FROM Tache 
                                            WHERE ebi_id = ".$ebi."
                                             AND demande_id = ".$demande."
                                             AND action_id = ".$action;
                                        $resultatTache_id = requete_is_plancharges($reqTache);
                                        $maTache = mysql_fetch_object($resultatTache_id);

                                        $req_Charge = "
                                        SELECT COUNT(charge) as charge_tache
                                        FROM Charge_par_tache 
                                        WHERE tache_id   =".$maTache->tache_id.
                                        " AND semaine_id =".$i.
                                        " AND login      = '".$myUser."'";

                                        $resultat_requete_Charge = mysql_fetch_object(requete_is_plancharges($req_Charge));

                                        if ($resultat_requete_Charge->charge_tache > 0) 
                                        {
                                            $req = "
                                                SELECT Charge_par_tache.charge 
                                                FROM Charge_par_tache, Tache 
                                                WHERE   Charge_par_tache.tache_id = Tache.tache_id
                                                    AND Tache.ebi_id = ".$ebi." 
                                                    AND Tache.demande_id = ".$demande." 
                                                    AND Tache.action_id = ".$action."
                                                    AND Charge_par_tache.login = '".$myUser."' 
                                                    AND Charge_par_tache.semaine_id = ".$i;

                                            $Charge = mysql_fetch_object(requete_is_plancharges($req));



                                        } else
                                        {
                                            $Charge->charge = "";
                                        }
                                        echo "  <input type = \"hidden\" name = \"tache_id\" value=".$maTache->tache_id.">
                                                    <td class=\"CHARGE\">";
                                                        $query = requete_is_plancharges($req);
                                                        $row = mysql_fetch_array($query);
                                                        $affichageCharge = $row[0];
                                                        echo " <input class=\"CHARGE\" type=\"number\" name=\"charge[]\" value=".$Charge->charge." min=\"0\" step=\"0.5\"/>
                                                    </td>";
                                    }
                                    echo"
                                </tr>
                                <tr class=".$myUser.">
                                    <td width=34%>Solde</td>";
                                    for ($i=$numerosemaine; $i <= $numerosemaine + $longueurAff; $i++) 
                                    {
                                        $req1 = "
                                                SELECT charge FROM Charge_par_tache WHERE login = '".$myUser."' AND semaine_id = ".$i;
                                        $req2 = "
                                                SELECT Nb_max_jours FROM Dispo_par_semaine WHERE login = '".$myUser."' AND semaine_id = ".$i;
                                        $query1 = requete_is_plancharges($req1);
                                        $row1 = mysql_fetch_row($query1);
                                        $query2 = requete_is_plancharges($req2);
                                        $row2 = mysql_fetch_row($query2);
                                        $solde=$row2[0]-$row1[0];
                                        echo "<td class=\"SOLDE\"><input type=\"hidden\" class=\"SOLDE\" value=".$solde."/> ".$solde."</td>";
                                    }
                                        ?>
                                </tr>
                                        <?php
                }
            ?>

            </tbody>
        </table>
            <p><input type="submit" name="submit" value="Mise à jour"></p>
        </form> 

问题是我似乎无法检索 $res。我刚开始使用 Ajax,所以我真的不知道该怎么做,并且在 Internet 上找不到答案,因为我使用 js 数组来存储我的值。

最佳答案

如果我理解你的问题,你想获得“check_charges.php”的响应值,那就是 $res 值,不是吗?该值将在您的 ajax 成功函数的第一个参数中返回。

您的代码:

jQuery('.SOLDE').each(function()
{
    jSolde[s] = jQuery(this).val();
    $.ajax(
    {
        type:'post',
        url:'check_charge.php',
        data:{charge : jCharge[s],solde : jSolde[s],dispo : jDispo[s],action:"update_site"},
        success: function(data) 
        {
            // Store where you want the data value
            alert('res value: ' + data);
            $('jSolde[s]').empty();
            $('jSolde[s]').append();
            $('.ajax').html($('.ajax input').val());
            $('.ajax').removeClass('ajax');
        }
    });
    s++;
});

希望对你有所帮助。

关于javascript - POST Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35317616/

相关文章:

php - Laravel 4.2 中路由的 HTTPS 错误 - Assets 通过 HTTPS 加载正常

php - 无法删除由 PHP 生成的 cookie

javascript - JQuery 不适用于大小为 1 的数组

javascript - 无法获取命名函数的事件目标属性

javascript - UIKit v3 选项卡不起作用

javascript - 如何在客户端和服务器中正确使用 OpenTelemetry 导出器和 OpenTelemetry 收集器?

php - MySQL 连接查询似乎有效,但未按预期执行

javascript - PHP - 单击按钮时从任何地方重新加载首页

javascript - 如果值为 0,我可以隐藏文本框值吗?

javascript - 使用ajax检查文本输入字段的值