Javascript Ajax在节点js中返回未定义的响应?

Javascript Ajax在节点js中返回未定义的响应?,javascript,jquery,ajax,node.js,Javascript,Jquery,Ajax,Node.js,我正在尝试将ajax请求发布到节点js中的server.js脚本。然后,脚本将数据从ajax请求传递到存储过程,并将结果返回给ajax函数。但由于某些原因,在调试ajax函数时,我遇到了一个未定义的错误。我可能做错了什么 plain.ejs <html> <head> <script src="http://code.jquery.com/jquery-1.11.3.min.js" ></script> <script sr

我正在尝试将ajax请求发布到节点js中的server.js脚本。然后,脚本将数据从ajax请求传递到存储过程,并将结果返回给ajax函数。但由于某些原因,在调试ajax函数时,我遇到了一个未定义的错误。我可能做错了什么

plain.ejs

<html>
<head>

    <script src="http://code.jquery.com/jquery-1.11.3.min.js" ></script>
    <script src="http://code.highcharts.com/highcharts.js" ></script>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>


</head>
<body>
<div id="container1" style="width:100%; height:400px;"></div>
<div id ="container2" style="height:20px;"></div>
<div id ="container3" style="width:100%; height:400px;"></div>
<script type="text/javascript">



     $(document).ready(function () {
            var bankid = [ 57, 9912, 9905, 16, 58 ];
            var country = ["KENYA", "KENYA", "KENYA", "UGANDA", "UGANDA"];
            var counter = 0;
            var merchantname = [];
            var successtranscs = [];
            var failedtranscs = [];
            var servicetranscs = [];
            var bankname;
            var rows =<%-JSON.stringify(Resultset)%>

                function initfunc() {
                    $.ajax({
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        url: "/dashboard",
                        data: JSON.stringify({country: country[counter], bankid: bankid[counter]}),
                        dataType: "json",
                        success: function (Result) {
                            Result = Result.d;
                            console.log("result" +Result);
                            var data = [];
                            var merchantname = [];
                            var successtranscs = [];
                            var failedtranscs = [];
                            var servicetranscs = [];
                            var bankname;

                            for (var i in Result) {
                                merchantname.push(Result[i].merchant_name);
                                successtranscs.push(Result[i].success_transcs);
                                failedtranscs.push(Result[i].failed_transcs);
                                servicetranscs.push(Result[i].service_transcs);
                                bankname = Result[i].bankname;


                            }
                            StackedChart(bankname, merchantname, successtranscs, failedtranscs, servicetranscs);
                            merchantname = [];
                            successtranscs = [];
                            failedtranscs = [];
                            servicetranscs = [];
                            if (counter == country.length - 1) {
                                counter = -1;
                                counter++;
                            }
                            else {
                                counter++;
                            }
                        },
                        error: function (Result) {
                            console.log(Result.d);
                        }
                    });


            }
            initfunc();
            function callfunc() {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "/dashboard",
                    data: JSON.stringify({country: country[counter], bankid: bankid[counter]}),
                    dataType: "json",
                    success: function (Result) {
                        Result = Result.d;
                        console.log("result" +Result);
                        var data = [];
                        var merchantname = [];
                        var successtranscs = [];
                        var failedtranscs = [];
                        var servicetranscs = [];
                        var bankname;

                        for (var i in Result) {
                            merchantname.push(Result[i].merchant_name);
                            successtranscs.push(Result[i].success_transcs);
                            failedtranscs.push(Result[i].failed_transcs);
                            servicetranscs.push(Result[i].service_transcs);
                            bankname = Result[i].bankname;


                        }
                        StackedChart(bankname, merchantname, successtranscs, failedtranscs, servicetranscs);
                        merchantname = [];
                        successtranscs = [];
                        failedtranscs = [];
                        servicetranscs = [];
                        if (counter == country.length - 1) {
                            counter = -1;
                            counter++;
                        }
                        else {
                            counter++;
                        }
                    },
                    error: function (Result) {


 console.log(Result.d);//it keeps going to the error //function

                    }
                });


            }




            function StackedChart(bank_name,merch_name, succ_val, fail_val, ser_val) {

                var myChart = Highcharts.chart('container1', {
                    chart: {
                        type: 'column'
                    },
                    title: {
                        text: bank_name
                    },
                    xAxis: {
                        categories: merch_name
                    },
                    yAxis: {
                        min: 0,
                        title: {
                            text: 'TransactionStatus'
                        },
                        stackLabels: {
                            enabled: true,
                            style: {
                                fontWeight: 'bold',
                                color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
                            }
                        }
                    },
                    legend: {
                        align: 'right',
                        x: -30,
                        verticalAlign: 'top',
                        y: 25,
                        floating: true,
                        backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || 'white',
                        borderColor: '#CCC',
                        borderWidth: 1,
                        shadow: false
                    },
                    tooltip: {
                        headerFormat: '<b>{point.x}</b><br/>',
                        pointFormat: '{series.name}: {point.y}<br/>Total: {point.stackTotal}'
                    },
                    plotOptions: {
                        column: {
                            stacking: 'normal',
                            dataLabels: {
                                enabled: true,
                                color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white'
                            }
                        }
                    },
                    series: [{
                        name: 'Servicefailure',
                        data: ser_val
                    }, {
                        name: 'Failure',
                        data: fail_val
                    }, {
                        name: 'Success',
                        data: succ_val
                    }]
                });
            }




            setInterval(callfunc, 2000);
        });



</script>


</body>
</html>

通过指定
数据类型:“json”
,您告诉jQuery它应该期望服务器返回json数据。但是,您的Express处理程序正在发回HTML:

res.render("plain.ejs",{Resultset:resultset});
因此,错误可能是jQuery无法解码响应

尝试发回JSON响应:

res.json({ Resultset : resultset });

此错误发生在哪一行?@C0dekid:-error:function(Result){console.log(Result.d);//它一直转到error//function}尝试在错误处理程序中记录
Result
,而不是
Result.d
。还要检查浏览器的控制台。:-谢谢,但出于某种原因,它会转到success函数并返回未定义的Result.d。@jessica我看不到任何地方定义了
d
属性,因此这是有意义的。尝试使用
结果
。@robertklep-谢谢。试过了,但还是不行。这是我在控制台中得到的结果-result:=result[object object]@robertklep-这是我在安慰结果后得到的结果。@jessica这是意料之中的,因为您正在串接响应。试试这个:
console.log(“result:,result)
(使用逗号,而不是+号)
res.json({ Resultset : resultset });