Javascript 无法从PHP数组中检索数据,该数组由使用JQuery Ajax的函数()返回
我有一个“click Listener”,它调用一个userId参数并将其发送到函数“getModalData”,然后该函数将一个数组值返回给变量“arrayedUserData” 这是函数“getModalData”。Ajax的“success”返回的php数组随后将被传递到变量“UserData”,该变量随后由函数返回Javascript 无法从PHP数组中检索数据,该数组由使用JQuery Ajax的函数()返回,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个“click Listener”,它调用一个userId参数并将其发送到函数“getModalData”,然后该函数将一个数组值返回给变量“arrayedUserData” 这是函数“getModalData”。Ajax的“success”返回的php数组随后将被传递到变量“UserData”,该变量随后由函数返回 function getModalData(passedUserId) { var UserData; $.ajax(
function getModalData(passedUserId) {
var UserData;
$.ajax(
{
type: "POST",
url: "get/get_modal_data.php",
data: { passedUserId: passedUserId },
dataType: "json",
success: function (data) {
UserData = data;
}
}
);
return UserData;
}
这是“get_modal_data.php”
此错误出现在控制台上:
未捕获的TypeError:无法读取未定义的get\u user\u帐户的属性“LastName”。js:66
这是get_user_accounts.js的第66行,出现在“click listener”上
$('S-modalbody h4').css('color',colorCode.).text(userId+“-”+arrayedUserData.LastName+”,“+arrayedUserData.FirstName)
但是,我感到困惑,因为php数组出现在浏览器的网络响应上:
成功连接{“UserId”:“1”,“EmailAddress”:”paulanselmendoza@gmail.com“,”姓“:”保罗·安塞尔“,”姓“:”门多萨“,”出生日期“:”1998-12-17“,”地址“,”拉古纳比南市斯托·托马斯奥利瓦雷斯家园南20号楼1B期8座“,”性别“,”男“,”联系电话“:”2147483647“,”血型ID“:”0“,”账户状态“:”激活“}”
您是否看到在JSON数据之前获得:
成功连接
?您必须删除它,否则将是无效的JSON响应。您共享的代码没有特定的内容
我相信您必须检查您的数据库连接,在成功连接时,它被设置为输出成功连接
,这会中断您的响应。请删除这段代码
include "../includes/connect.php";
它可以是这样的:
$conn = mysqli_connect() or die("Error");
echo "Successful Connection";
因为
getModalData
function在它被ajax指定之前返回UserData
(UserData=data;
)。使用回调函数:
使用回调
function getModalData(passedUserId,callback) {
$.ajax(
{
type: "POST",
url: "get/get_modal_data.php",
data: { passedUserId: passedUserId },
dataType: "json",
success: function (data) {
callback(data);
}
}
);
}
$('body').on('click', '.openModal', function () {
var userId = $(this).val(),
btnText = $(this).text(),
btnClass = '',
colorCode = '';
getModalData(userId, function (arrayedUserData) {
if (btnText === "Delete") {
btnClass = 'danger';
colorCode = '#d9534f';
} else {
btnClass = 'warning';
colorCode = '#f0ad4e';
}
$('#actionBtn').removeClass().addClass('btn btn-' + btnClass).text(btnText);
$('#modalTitle').text('Confirm ' + btnText);
$('#S-modalbody p').text('Are you sure you want to ' + btnText + ' user: ');
$('#S-modalbody h4').css('color', colorCode).text(userId + " - " + arrayedUserData.LastName + ", " + arrayedUserData.FirstName);
});
});
可能重复从异步函数返回数据的可能重复,因此将返回未定义的数据。阅读请获取
include“./includes/connect.php”的源代码代码>您将以字符串形式获得响应。你是在给某个地方打电话JSON.parse(arrayedUserData)
却没有发出去吗?@PaulAnselMendoza欢迎你,看看Promise,这是一种新的方式谢谢你注意到Praveen先生,一直以来,我都认为浏览器显示了成功的Ajax连接。@PaulAnselMendoza这不是问题所在吗?问题出在其他地方了吗?Praveen先生,你的回答也是正确的,重复的“成功连接”使JSON响应无效,同时我没有对我的函数使用回调方法,使其在AJAX赋值之前返回值。@PaulAnselMendoza谢谢<代码>:)
$conn = mysqli_connect() or die("Error");
echo "Successful Connection";
function getModalData(passedUserId,callback) {
$.ajax(
{
type: "POST",
url: "get/get_modal_data.php",
data: { passedUserId: passedUserId },
dataType: "json",
success: function (data) {
callback(data);
}
}
);
}
$('body').on('click', '.openModal', function () {
var userId = $(this).val(),
btnText = $(this).text(),
btnClass = '',
colorCode = '';
getModalData(userId, function (arrayedUserData) {
if (btnText === "Delete") {
btnClass = 'danger';
colorCode = '#d9534f';
} else {
btnClass = 'warning';
colorCode = '#f0ad4e';
}
$('#actionBtn').removeClass().addClass('btn btn-' + btnClass).text(btnText);
$('#modalTitle').text('Confirm ' + btnText);
$('#S-modalbody p').text('Are you sure you want to ' + btnText + ' user: ');
$('#S-modalbody h4').css('color', colorCode).text(userId + " - " + arrayedUserData.LastName + ", " + arrayedUserData.FirstName);
});
});