我正在开发一个使用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) {
}
}
答案 0 :(得分:0)
您遇到语法错误:
替换:
url: 'data/members.php';
为此:
url: 'data/members.php',
','最后
答案 1 :(得分:0)
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) {
...
}
});
答案 2 :(得分:0)
我很快学会拼写生活会很好....在javascript中有一个错字...成功就成功了,难怪它从未被解雇过。现在又有一个问题数据正在返回一个数组:数组如何访问数据?如果我使用数据[" 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");
}
});
});
});
答案 3 :(得分:0)
数据是否以数组形式获取记录。正如鲍里斯指出的那样
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");
}
});