Javascript 当我调用node.js中的ajax作为未定义的返回时

Javascript 当我调用node.js中的ajax作为未定义的返回时,javascript,jquery,ajax,node.js,Javascript,Jquery,Ajax,Node.js,mynode.js代码 index.js var mysql = require('mysql'); var fs = require('fs'); var ejs = require('ejs'); var client = mysql.createConnection({ user : 'root', password : '1234', database : 'company' }); exports.index = function(req, res) { fs.

mynode.js代码

index.js

var mysql = require('mysql');
var fs = require('fs');
var ejs = require('ejs');
var client = mysql.createConnection({
    user : 'root',
    password : '1234',
    database : 'company'
});
exports.index = function(req, res) {
fs.readFile('views/index.html','utf-8',function(error,data){
    client.query('select * from spa',function(error,result){
        if(error){
            console.log('error:'+error);
        }else{
            res.send(ejs.render(data,{
                title:'Express',
                result:result
            }));
        }//end else
    });//end query
});//end fs
};
我的index.html代码

 <script>
$(document).ready(function() {
    function listView() {
        $('#output').empty();
        $.ajax({
            url : '/',
            type : 'GET',
            success : function(result) {
                alert('success');
                alert(typeof (result));
                $(result).each(function(index, item) {
                    var output = '';
                    output += '<tr>';
                    output += '<td>' + item.file_no + '</td>';
                    output += '<td>' + item.file_name + '</td>';
                    output += '<td>' + item.file_content + '</td>';
                    output += '<td>' + item.file_model + '</td>';
                    output += '</tr>';
                    $('#output').append(output);
                });//end each
            }//end success
        });//end ajax
    }//end listView();
   });//end document
 </script>

<table id="output"></table>

$(文档).ready(函数(){
函数listView(){
$(“#输出”).empty();
$.ajax({
url:“/”,
键入:“GET”,
成功:功能(结果){
警惕(“成功”);
警报(类型(结果));
$(结果)。每个(功能)(索引,项目){
var输出=“”;
输出+='';
输出+=''+item.file_no+'';
输出+=''+item.file_name+'';
输出+=''+item.file\u内容+'';
输出+=''+item.file_model+'';
输出+='';
$('#output')。追加(output);
})//结束每一个
}//最终成功
});//结束ajax
}//结束listView();
});//结束文件
当我运行代码直到成功执行为止。警报(“成功”)->工作正常

警报(类型(结果))->字符串>工作!但是所有的数据表都没有定义


我不知道情况。。请帮助我..

假设您只想迭代结果对象,而不是:

$(result).each(function(index, item) {
我想你可能想要:

$.each(result, function(index, item) {

如果这仍然不能满足你的需要,那么添加一个

console.log(result);
要准确地检查ajax调用的结果是什么,并确保您拥有准确的预期数据,并且您正在迭代它的正确部分。

您说的
typeof(result)
string
,希望
JSON
。但是如果你想迭代它,那么你必须解析为
javascript
array

var resultArray = JSON.parse(result);
然后迭代一个数组

$.each(resultArray, function(index, item) {

而且,如果你像我建议的那样做了
console.log(result)
,你会发现它是一个字符串,而不是一个javascript对象。这是基本的、简单的调试。学习如何亲自调查这些事情是值得的。