javascript-JQuery Ajaxを使用するfunction()によって返されるPHP配列からデータを取得できません
この「クリックリスナー」を使用して、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();
}
?>
このエラーはコンソールに表示されます:
Uncaught TypeError:未定義のget_user_accounts.js:66のプロパティ'LastName'を読み取れません
これは、「クリックリスナー」に存在するget_user_accounts.jsの66行目です。
$('#S-modalbody h4')。css('color'、colorCode).text(userId + "-" + arrayedUserData.LastName + "、" + arrayedUserData.FirstName);
しかし、php配列がブラウザのネットワーク応答に表示されるため、混乱しています:
正常な接続{"UserId": "1"、 "EmailAddress": "[email protected]"、 "FirstName": "Paul Ansel"、 "LastName": "Mendoza"、 "BirthDate": "1998- 12-17 "、" Address ":" Phase 1B Block 8 Lot 20 Olivarez Homes South、Sto。Tomas、Binan City、Laguna "、" Gender ":" Male "、" ContactNumber ":" 2147483647 "、" BloodTypeId ": "0"、 "AccountStatus": "ACTIVE"}
答え :
解決策:
JSONデータの前にSuccessful Connection
が表示されることを確認しましたか?それを削除する必要があります。削除しないと、無効なJSON応答になります。共有したコードには特定のものがありません。
データベース接続を確認する必要があると思います。接続が成功すると、 Successful Connection
を出力するように設定されているため、応答が中断されます。そのコードを削除してください。
include "../includes/connect.php";
次のようになります:
$ conn = mysqli_connect()またはdie( "Error");
echo "Successful Connection";
答え :
解決策:
getModalData
機能は、ajax( UserData
を返すためです。 >UserData=データ;)。コールバック関数を使用する:
コールバックの使用
function getModalData(passedUserId、callback){
$ .ajax(
{{
タイプ:「POST」、
url: "get / get_modal_data.php"、
データ:{passedUserId:passedUserId}、
dataType: "json"、
成功:関数(データ){
callback(data);
}
}
);
}
$('body')。on('click'、'.openModal'、function(){
var userId = $(this).val()、
btnText = $(this).text()、
btnClass =''、
colorCode ='';
getModalData(userId、function(arrayed UserData){
if(btnText === "Delete"){
btnClass='危険';
colorCode ='#d9534f';
} そうしないと {
btnClass='警告';
colorCode ='#f0ad4e';
}
$('#actionBtn')。removeClass()。addClass('btn btn-' + btnClass).text(btnText);
$('#modalTitle')。text('確認'+ btnText);
$('#S-modalbody p')。text('よろしいですか'+ btnText +'user:');
$('#S-modalbody h4')。css('color'、colorCode).text(userId + "-" + arrayed UserData .LastName + "、" +arrayedUserData。ファーストネーム);
});
});
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。