Javascript 如何接收JSON数组?

Javascript 如何接收JSON数组?,javascript,php,arrays,json,Javascript,Php,Arrays,Json,我正在尝试使用JSON从JavaScript中的PHP文档接收一个数组。PHP文档发送数组(在我用浏览器打开PHP文件时打印),但不调用success()或done()方法。我做错了什么 代码: JavaScript: function updateHighscores() { //var functionName = "showData"; $.ajax({ //type: "GET", dataType: "json",

我正在尝试使用JSON从JavaScript中的PHP文档接收一个数组。PHP文档发送数组(在我用浏览器打开PHP文件时打印),但不调用
success()
done()
方法。我做错了什么

代码:

JavaScript

function updateHighscores() {

    //var functionName = "showData";
    $.ajax({        
        //type: "GET",
        dataType: "json",
        url: "gesallprov.php",
        //data: {functionName: functionName},
    }).done(function(data) {
        window.alert("GGGG");

        var table = "<table style='width:100%'>" +
        "<tr>" +
        "<th>No.</th>" +
        "<th>Name</th>" +
        "<th>Date & Time</th>"  +
        "<th>Score</th>" +
        "</tr>";

        $(data).each(function(index, value) {           
            var i = 1;

            table += "<tr>" +
            "<td>" + i + "</td>" +
            "<td>" + value.name + "</td>" + 
            "<td>" + value.when + "</td>" +
            "<td>" + value.score + "</td>" +
            "</tr>";

            i++;
            });
}
function showData() {
    try {

        $dbh = new PDO(...);
        $st = $dbh->prepare("SELECT `name` , `when` , `score` FROM `snake` ORDER BY `score` DESC");
        $st->execute();

        $result = $st->fetchAll(PDO::FETCH_ASSOC);

        return $result;
        $st = null;
        $dbh = null;
    }
    catch (PDOException $ex) {
        echo 'Connection failed: ' . $ex->getMessage();
    }
}

echo json_encode(showData());

如果我测试代码,我会在浏览器控制台中看到以下消息:

SyntaxError:在参数列表之后缺少)

如果在
updateHighscores
函数中添加右括号和大括号,可能会有所帮助:

function updateHighscores() {

    //var functionName = "showData";
    $.ajax({
        //type: "GET",
        dataType: "json",
        url: "gesallprov.php",
        //data: {functionName: functionName},
    }).done(function (data) {
        window.alert("GGGG");

        var table = "<table style='width:100%'>" +
                "<tr>" +
                "<th>No.</th>" +
                "<th>Name</th>" +
                "<th>Date & Time</th>" +
                "<th>Score</th>" +
                "</tr>";

        $(data).each(function (index, value) {
            var i = 1;

            table += "<tr>" +
                    "<td>" + i + "</td>" +
                    "<td>" + value.name + "</td>" +
                    "<td>" + value.when + "</td>" +
                    "<td>" + value.score + "</td>" +
                    "</tr>";

            i++;
        });
    });
}
函数updateHighscores(){
//var functionName=“showData”;
$.ajax({
//键入:“获取”,
数据类型:“json”,
url:“gesallprov.php”,
//数据:{functionName:functionName},
}).完成(功能(数据){
窗口警报(“GGGG”);
var table=“”+
"" +
“没有。”+
“姓名”+
“日期和时间”+
“得分”+
"";
$(数据)。每个(函数(索引、值){
var i=1;
表+=“”+
“+i+”+
“”+value.name+“”+
“”+value.when+“”+
“”+value.score+“”+
"";
i++;
});
});
}

如果我测试您的代码,我会在浏览器控制台中看到以下消息:

SyntaxError:在参数列表之后缺少)

如果在
updateHighscores
函数中添加右括号和大括号,可能会有所帮助:

function updateHighscores() {

    //var functionName = "showData";
    $.ajax({
        //type: "GET",
        dataType: "json",
        url: "gesallprov.php",
        //data: {functionName: functionName},
    }).done(function (data) {
        window.alert("GGGG");

        var table = "<table style='width:100%'>" +
                "<tr>" +
                "<th>No.</th>" +
                "<th>Name</th>" +
                "<th>Date & Time</th>" +
                "<th>Score</th>" +
                "</tr>";

        $(data).each(function (index, value) {
            var i = 1;

            table += "<tr>" +
                    "<td>" + i + "</td>" +
                    "<td>" + value.name + "</td>" +
                    "<td>" + value.when + "</td>" +
                    "<td>" + value.score + "</td>" +
                    "</tr>";

            i++;
        });
    });
}
函数updateHighscores(){
//var functionName=“showData”;
$.ajax({
//键入:“获取”,
数据类型:“json”,
url:“gesallprov.php”,
//数据:{functionName:functionName},
}).完成(功能(数据){
窗口警报(“GGGG”);
var table=“”+
"" +
“没有。”+
“姓名”+
“日期和时间”+
“得分”+
"";
$(数据)。每个(函数(索引、值){
var i=1;
表+=“”+
“+i+”+
“”+value.name+“”+
“”+value.when+“”+
“”+value.score+“”+
"";
i++;
});
});
}
为什么不试试下面的代码呢?它可能会帮你解决问题

jQuery.ajax({
类型:“POST”,
url:“gesallprov.php”,///包含ajax的url
//数据:formData,
数据类型:“json”,
成功:功能(数据)
{
窗口警报(“GGGG”);
var table=“”+
"" +
“没有。”+
“姓名”+
“日期和时间”+
“得分”+
"";
$(数据)。每个(函数(索引,值){
var i=1;
表+=“”+
“+i+”+
“”+value.name+“”+
“”+value.when+“”+
“”+value.score+“”+
"";
i++;
});
},
错误:函数(xhr、ajaxOptions、thrownError){
console.log(xhr);
console.log(ajaxOptions);
//控制台日志(thrownError);
//警报(xhr.状态);
//警报(ajaxOptions);
}
})
为什么不试试下面的代码呢?它可能会帮你解决问题

jQuery.ajax({
类型:“POST”,
url:“gesallprov.php”,///包含ajax的url
//数据:formData,
数据类型:“json”,
成功:功能(数据)
{
窗口警报(“GGGG”);
var table=“”+
"" +
“没有。”+
“姓名”+
“日期和时间”+
“得分”+
"";
$(数据)。每个(函数(索引,值){
var i=1;
表+=“”+
“+i+”+
“”+value.name+“”+
“”+value.when+“”+
“”+value.score+“”+
"";
i++;
});
},
错误:函数(xhr、ajaxOptions、thrownError){
console.log(xhr);
console.log(ajaxOptions);
//控制台日志(thrownError);
//警报(xhr.状态);
//警报(ajaxOptions);
}
})

在您的函数中,您是否尝试
回送
$result
而不返回它。您是否在控制台中选择了错误。。。我看到u r在循环中使用变量i。您应该在每个块之外声明
var i
变量。您的done函数没有被调用,因此这意味着ajax调用失败。您应该实现error函数,以了解函数中失败的原因。您是否尝试
回送
$result
而不返回它。是吗您在控制台中选择了错误。。。我看到u r在循环中使用变量i。您应该在每个块外声明
var i
变量。您的done函数没有被调用,因此这意味着ajax调用失败。您应该实现error函数以了解失败的原因。plz提到了哪些更改,chk变量i在循环中提到了哪些更改更改和循环chk中的chk变量i这帮助我发现问题出在php文档中的未定义变量(我还没有在这里编写这部分代码)。我本来应该将
isset()
$\u POST[]
一起使用,但我并不知道。这帮助我发现问题出在php文档中有一个未定义的变量(我没有在这里编写这部分代码)。我应该使用
isset()
$\u POST[]
一起使用,但我不知道这一点。