繁体   English   中英

无法将数据从php返回到JavaScript

[英]Not getting data back from php into JavaScript

我正在使用JavaScript(AJax)调用php文件查询MySQL服务器的项目。 我已经跟踪到php的调用,并看到它正在工作,但是AJax调用却什么也没有。 以下是我的JavaScript和PHP代码,有人可以看一下并告诉我我所缺少的内容。

javaScript:

$(function() {
    $('#members').on('input', function() {
        var opt = $('option[value="'+$(this).val()+'"]');
        /*getMember(opt.length ? opt.attr('id'): 0);*/
        $.ajax({
            url: 'data/members.php',
            type: 'POST',
            data: {'action':'get', 'status':opt.attr('id')},
            sucess: function(data) {
                alert(data);
            },
            error: function() {
                alert("We have a problem");
            }
        });
    });
});

的PHP:

$action = $_POST["action"];

if ($action == "get") {
    $memberID = $_POST["status"];
    try {
        require "../../classes/data.php";
        $data = new data();
        $conn = $data->connect();
        $sql = "SELECT * FROM members WHERE memberID = " . $memberID;
        $result = $data->query($sql);
        while($row = $result->fetch_assoc()) {
            $returnData = $row;
        }
        echo $returnData;
    } catch (Exception $ex) {

    }
}

您有语法错误:

更换:

url: 'data/members.php';

为了这:

url: 'data/members.php',

',' 在末尾

PHP部分

// You have SQL injection here
$sql = "SELECT * FROM members WHERE memberID = " . $memberID; 
$result = $data->query($sql);
while($row = $result->fetch_assoc()) {
    // You probably want this as array 
    $returnData = $row;
}
// use json_encode
echo json_encode($returnData);

JS部分:

$.ajax({
    url: 'data/members.php',
    type: 'POST',
    // add data type here
    dataType: 'JSON',
    data: {'action':'get', 'status':opt.attr('id')},
    sucess: function(data) {
        ...
    }
});

一旦我学会拼写,生活就会很好。。。在javascript中有错字了。成功就是成功了,难怪它永远不会被解雇。 现在又有一个问题数据正在返回一个array:array我该如何访问数据? 如果我使用data [“ key”],我什么也不会得到。 如果我警告数据,我将从mysql返回所有数据。

$(function() {
$('#members').on('input', function() {
    var opt = $('option[value="'+$(this).val()+'"]');
    /*getMember(opt.length ? opt.attr('id'): 0);*/
    $.ajax({
        url: 'data/members.php',
        type: 'POST',
        data: {'action':'get', 'status':opt.attr('id')},
        success: function(data) {
            alert(data);
        },
        error: function() {
            alert("We have a problem");
        }
    });
});

});

数据是否以数组形式获取记录。 正如鲍里斯指出的

while($row = $result->fetch_assoc()) {
    // You probably want this as array 
    $returnData = $row;
}

$ returnData始终会覆盖最后一行。

您需要像这样编码。

$returnData = [];
while($row = $result->fetch_assoc()) {
        // You probably want this as array 
        array_push($returnData,$row);
    }

当结果返回到javascript时,您需要使用JSON.parse

$.ajax({
        url: 'data/members.php',
        type: 'POST',
        data: {'action':'get', 'status':opt.attr('id')},
        success: function(data) {
            var result = JSON.parse(data);
            alert(data);
        },
        error: function() {
            alert("We have a problem");
        }
    });

暂无
暂无

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

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