我有这个“click Listener”,它调用userId参数并将其发送到函数“getModalData”,然后将数组值返回给变量“arrayedUserData”。
$('body').on('click', '.openModal', function () {
var userId = $(this).val(),
btnText = $(this).text(),
btnClass = '',
colorCode = '',
arrayedUserData = getModalData(userId);
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);
});
这是函数 - “getModalData”。从Ajax的“成功”返回的php数组将被传递给变量 - “UserData”,然后由函数返回。
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”。
<?php
include "../includes/connect.php";
if (isset($_POST['passedUserId'])) {
$UserId = mysqli_real_escape_string($con, $_POST['passedUserId']);
$getUserData = mysqli_query($con, "SELECT * FROM tblUserAccounts WHERE uaUserId = '".$UserId."'");
$uaRow = mysqli_fetch_assoc($getUserData);
$UserDataArr = array("UserId" => $uaRow['uaUserId'],
"EmailAddress" => $uaRow['uaEmailAddress'],
"FirstName" => $uaRow['uaFirstName'],
"LastName" => $uaRow['uaLastName'],
"BirthDate" => $uaRow['uaBirthDate'],
"Address" => $uaRow['uaAddress'],
"Gender" => $uaRow['uaGender'],
"ContactNumber" => $uaRow['uaContactNumber'],
"BloodTypeId" => $uaRow['uaBloodTypeId'],
"AccountStatus" => $uaRow['uaAccountStatus'],
);
echo json_encode($UserDataArr);
exit();
}
?>
控制台上出现此错误:
未捕获的TypeError:无法读取未定义的get_user_accounts.js的属性“LastName”:66
这是get_user_accounts.js的第66行,它出现在“点击监听器”上。
$('#S-modalbody h4')。css('color',colorCode).text(userId +“ - ”+ arrayedUserData.LastName +“,”+ arrayedUserData.FirstName);
但是,我很困惑因为php数组出现在浏览器的网络响应中:
成功连接{“UserId”:“1”,“EmailAddress”:“paulanselmendoza @ gmail.com”,“FirstName”:“Paul Ansel”,“LastName”:“Mendoza”,“BirthDate”:“1998- 12-17“,”地址“:”1B阶段8区块20 Olivarez Homes South,Sto.Tomas,Binan City,Laguna“,”Gender“:”Male“,”ContactNumber“:”2147483647“,”BloodTypeId“: “0”,“AccountStatus”:“ACTIVE”}
答案 0 :(得分:1)
您是否在JSON数据之前看到了Successful Connection
?您必须删除它,如果不是,它将是无效的JSON响应。您分享的代码并不具备特定的内容。
我相信你必须检查你的数据库连接,成功连接的位置,它被设置为输出Successful Connection
,这会破坏你的响应。请删除那段代码。
include "../includes/connect.php";
可能是这样的:
$conn = mysqli_connect() or die("Error");
echo "Successful Connection";
答案 1 :(得分:0)
因为getModalData
功能在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);
});
});