Javascript 使用ajax将PHP数组传递给js

Javascript 使用ajax将PHP数组传递给js,javascript,php,ajax,Javascript,Php,Ajax,我已经查找了有关此主题的问题,但无法解决我的问题。 我有一个包含数组的php文件: $data = ['logged' => $_SESSION['loggedin'], 'sessName' => $_SESSION['name']]; echo json_encode($data); 这是我的AJAX代码,但我不知道应该在“数据”中添加什么。基本上,我的目标是在Javascript代码中使用$data数组。(因此我可以使用条件操纵DOM) $.ajax

我已经查找了有关此主题的问题,但无法解决我的问题。 我有一个包含数组的php文件:

$data = ['logged' => $_SESSION['loggedin'], 'sessName' => $_SESSION['name']];
            echo json_encode($data);
这是我的AJAX代码,但我不知道应该在“数据”中添加什么。基本上,我的目标是在Javascript代码中使用$data数组。(因此我可以使用条件操纵DOM)


$.ajax({
键入:“POST”,
数据类型:“json”,
url:'sign-in.php',
数据:
成功:功能(数据)
{
试一试{
data=JSON.parse(数据);
}捕获(e){}
控制台日志(数据);
}
});

通过在
$调用中指定
数据类型:“json”
。ajax
调用,jQuery将自动将json数据解析为javascript对象/数组。您可能可以从代码中删除
JSON.parse

另外还有一个额外的
数据:
行,这将是一个javascript语法错误


$.ajax({
键入:“POST”,
数据类型:“json”,
url:'sign-in.php',
成功:功能(数据){
控制台日志(数据);
},
});
还有一件事。您的PHP代码需要在
$\u会话中设置
'loggedin'
'name'
。否则,PHP(取决于设置)可能会在其间生成警告消息,并导致JSON解析错误

如果未设置其中一个或两个值,则可以使用(从PHP 7.0开始引入)来指定某些值:

$data=[
“logged”=>$\u会话['loggedin']??错误,
“sessName”=>$\u会话[“名称”]??“,
];
echo json_编码($data);


更新:为潜在的无效密钥问题添加正确的处理。

通过在
$中指定
数据类型:“json”
。ajax
调用,jQuery将自动将json数据解析为javascript对象/数组。您可能可以从代码中删除
JSON.parse

另外还有一个额外的
数据:
行,这将是一个javascript语法错误


$.ajax({
键入:“POST”,
数据类型:“json”,
url:'sign-in.php',
成功:功能(数据){
控制台日志(数据);
},
});
还有一件事。您的PHP代码需要在
$\u会话中设置
'loggedin'
'name'
。否则,PHP(取决于设置)可能会在其间生成警告消息,并导致JSON解析错误

如果未设置其中一个或两个值,则可以使用(从PHP 7.0开始引入)来指定某些值:

$data=[
“logged”=>$\u会话['loggedin']??错误,
“sessName”=>$\u会话[“名称”]??“,
];
echo json_编码($data);


更新:为潜在的无效密钥问题添加正确的处理。

在您的示例中,您没有使用session_start()初始化会话,并且建议它指示响应内容类型,我还修复了您的ajax请求:

PHP:

Jquery:

$.ajax({
    type: 'GET',
    dataType: "json",
    url:'sign-in.php',
    success: function(data)
    {
        try {
            data = JSON.parse(data);
        } catch(e) {}
            console.log(e);
        }
    }
 });

在您的示例中,您没有使用session_start()初始化会话,而且它还重新命名以指示响应内容类型,我还修复了您的ajax请求:

PHP:

Jquery:

$.ajax({
    type: 'GET',
    dataType: "json",
    url:'sign-in.php',
    success: function(data)
    {
        try {
            data = JSON.parse(data);
        } catch(e) {}
            console.log(e);
        }
    }
 });

ajax成功方法中的数据包含数组。尝试,例如,
var logged=data.logged只需按原样使用
数据
变量即可。当您设置AJAX调用的
dataType
时,响应值将作为JSON处理,并由。“dataType“json”:将响应评估为json并返回一个JavaScript对象。”“但是我不知道应该在“data”中放入什么-
数据
已经提供给
success
函数。在试图修改数据之前,您是否检查了数据中已有的内容?您希望从javascript变量数据中得到什么?您的
console.log(数据)
显示了什么?使用
header('Content-type:application/json')
echo json\u encode($data)
数据
在ajax成功方法中包含数组。尝试,例如,
var logged=data.logged只需按原样使用
数据
变量即可。当您设置AJAX调用的
dataType
时,响应值将作为JSON处理,并由。“dataType“json”:将响应评估为json并返回一个JavaScript对象。”“但是我不知道应该在“data”中放入什么-
数据
已经提供给
success
函数。在试图修改数据之前,您是否检查了数据中已有的内容?您希望从javascript变量数据中得到什么?您的
console.log(数据)
显示了什么?使用
header('Content-type:application/json')
echo json\u encode($data)我尝试了这个,但在控制台中看不到任何东西我尝试验证JSON,这就是我得到的:错误:第4行的Parse Error:…“sessName”:“asd1”};-------------------------^应为'EOF'、'}'、'、']',得到'undefined',在加载页面之前,可以在浏览器的调试控制台中打开“网络”选项卡。在它的某个地方应该有一个“响应”子选项卡。加载页面并触发JSON请求时,您可以在那里看到实际输出。@DánielMozsár确保sign-in.PHP文件中的PHP标记外没有空格或任何其他字符。响应不仅是
echo
的输出,PHP标记之外的所有内容都会通过脚本命令的输出收集到输出缓冲区,并且缓冲区的内容会在文件结束时作为响应发送。我尝试过这样做,但是我在控制台中看不到任何东西我尝试验证JSON,这就是我得到的:错误:第4行的解析错误:…“sessName”:“asd1”};-------------------------^应为'EOF'、'}'、'、']',得到'undefined',在加载页面之前,可以在浏览器的调试控制台中打开“网络”选项卡。在它的某个地方应该有一个“响应”子选项卡。加载时,您可以在那里看到实际输出
$.ajax({
    type: 'GET',
    dataType: "json",
    url:'sign-in.php',
    success: function(data)
    {
        try {
            data = JSON.parse(data);
        } catch(e) {}
            console.log(e);
        }
    }
 });