简体   繁体   English

如何在jquery对话框表中正确显示从php接收的数据

[英]How to display received data from php properly in jquery dialog table

There is a jquery dialog with a table where I would like to add some rows upon the information received from php script (potrawyINFOEngine.php).有一个带有表格的 jquery 对话框,我想在从 php 脚本 (potrawyINFOEngine.php) 收到的信息上添加一些行。 It looks that scripts sends the data correctly but I cannot upload it into the table, I get 'undefined' messages loaded into the table instead.看起来脚本正确发送了数据,但我无法将其上传到表中,而是将“未定义”消息加载到表中。 Messages from a browsers console looks OK to me showing that the data has been send back from php script.来自浏览器控制台的消息对我来说看起来没问题,表明数据已从 php 脚本发回。 Can you please help me with this?你能帮我解决这个问题吗?​ Please look at the code attached:请看附上的代码:

$("#dialog-message1").hide();
$('.confirmation1').on('click', function(e) {
    e.preventDefault();
    var lnk = $(this).attr('href');
    var product_name = $(this).parents("tr").find("td").first().html();
    console.log(product_name);

    $("#dialog-message1").append("<table id='tableINFO'> </table>");
    $("#dialog-message1 table").append("<tr><th>Nazwa produktu</th><th>Waga (g)</th><th>Kalorie (Kcal)</th> <th>Białko (g)</th> <th>Tłuszcze (g)</th> i<th>Węglowodany (g)</th> </tr>");

    console.log(product_name);

         $.ajax({
            method: "POST",
            url: "potrawyINFOEngine.php",
            data: {"nazwa": product_name},
         }).done(function( data ) {
            var result = $.parseJSON(data);
            var len = data.length;
            for(var i=0; i<len; i++){
                    var T_nazwaproduktu = data[i].produkt;
                    var T_waga = data[i].waga;
                    var T_kalorie = data[i].kalorie;
                    var T_bialko = data[i].bialko;
                    var T_tluszcze = data[i].tluszcze;
                    var T_weglowodany = data[i].weglowodany;

                    var tr_str = "<tr>" +
                            "<td align='left'>" + T_nazwaproduktu + "</td>" +
                            "<td align='left'>" + T_waga + "</td>" +
                            "<td align='left'>" + T_kalorie + "</td>" +
                            "<td align='left'>" + T_bialko + "</td>" +
                            "<td align='left'>" + T_tluszcze + "</td>" +
                            "<td align='left'>" + T_weglowodany + "</td>" +
                            "</tr>";

                    $("#dialog-message1 table").append(tr_str);

            }
            console.log(result);


      });


    $("#dialog-message1").dialog({
        height: "auto",
        width: 700,
        modal: true,
        buttons: {
            Ok: function() {
                    $(this).dialog("close");
                    $( "#dialog-message1 table" ).remove();
            }
        }
    });
});

UPDATE: Please see the php script:更新:请参阅php脚本:

<?php

include 'db_connection.php';
include 'functions.php';


$return_arr = array();

error_log("-->potrawaINFOEngine.php:"."\n", 3, "/var/www/html/jadlospis/errors.log");

if (isset($_POST['nazwa'])){

        $T_NazwaPotrawy = $_POST['nazwa'];

        $SQL = "SELECT produkt AS T_P, waga AS T_W FROM potrawydetails WHERE nazwa='".$T_NazwaPotrawy."'";
        $result = mysqli_query($conn,$SQL ) or die(mysqli_error($this->dblink));
        while($row = mysqli_fetch_array($result))
        {
                $T_Produkt=$row['T_P'];
                $T_Waga=$row['T_W'];

                $T_ProduktDetails=ProduktyDetails($T_Produkt,$T_Waga);

                $T_Kalorie=$T_ProduktDetails['kalorie'];
                $T_Bialko=$T_ProduktDetails['bialko'];
                $T_Tluszcze=$T_ProduktDetails['tluszcze'];
                $T_Weglowodany=$T_ProduktDetails['weglowodany'];

                error_log("-->".$T_Produkt.",".$T_Waga.",".$T_Kalorie."\n", 3, "/var/www/html/jadlospis/errors.log");

                $return_arr[] = array(  "produkt" => $T_Produkt,
                                        "waga" => $T_Waga,
                                        "kalorie" => $T_Kalorie,
                                        "bialko" => $T_Bialko,
                                        "tluszcze" => $T_Tluszcze,
                                        "weglowodany" => $T_Weglowodany);

        }
        mysqli_close($conn);
        echo json_encode($return_arr);
}
?>

Please see attached screen:请参阅附加屏幕:

控制台日志

Thank you all for the hints.谢谢大家的提示。 The solution that worked for me was using result instead of data.对我有用的解决方案是使用结果而不是数据。

Please see attached code:请看附件代码:

     $.ajax({
        method: "POST",
        url: "potrawyINFOEngine.php",
        data: {"nazwa": product_name},
     }).done(function( data ) {
        var result = $.parseJSON(data);
        var len = result.length;
        for(var i=0; i<len; i++){
                var T_nazwaproduktu = result[i].produkt;
                var T_waga = result[i].waga;
                var T_kalorie = result[i].kalorie;
                var T_bialko = result[i].bialko;
                var T_tluszcze = result[i].tluszcze;
                var T_weglowodany = result[i].weglowodany;

                var tr_str = "<tr>" +
                        "<td align='left'>" + T_nazwaproduktu + "</td>" +
                        "<td align='left'>" + T_waga + "</td>" +
                        "<td align='left'>" + T_kalorie + "</td>" +
                        "<td align='left'>" + T_bialko + "</td>" +
                        "<td align='left'>" + T_tluszcze + "</td>" +
                        "<td align='left'>" + T_weglowodany + "</td>" +
                        "</tr>";

                $("#dialog-message1 table").append(tr_str);

        }
        console.log(data);
  });

Now the table looks much better.现在桌子看起来好多了。 屏幕1

Thanks to all.谢谢大家。

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

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