POST Ajax请求

3

我正在处理一个老项目,该项目一开始并不是由我开发的。我需要发起一个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。由于我使用js数组来存储我的值,因此刚开始接触Ajax,真的不知道该怎么做,也在互联网上找不到答案。


你应该发布更多的代码,因为我们无法看到 check_charges.php 何时/在哪里被调用。 - sglessard
我会从控制台开始查看这个问题。你看到有任何错误吗?还要确保这些值被发送了,查看网络选项卡并检查你传递给 .php 文件的 URL。 - prola
@prola 控制台上没有任何错误,我可以看到值被发送了。 - jrfoehn
@sglessard check_charges.php 在 $.ajax 中被调用。 - jrfoehn
1个回答

3
如果我理解你的问题正确,你想获取“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++;
});

我希望我能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接