Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从PHP数组中检索数据,该数组由使用JQuery Ajax的函数()返回_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 无法从PHP数组中检索数据,该数组由使用JQuery Ajax的函数()返回

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(

我有一个“click Listener”,它调用一个userId参数并将其发送到函数“getModalData”,然后该函数将一个数组值返回给变量“arrayedUserData”

这是函数“getModalData”。Ajax的“success”返回的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”


此错误出现在控制台上:

未捕获的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);
    });
});