Javascript 使用ajax将PHP数组传递给js
我已经查找了有关此主题的问题,但无法解决我的问题。 我有一个包含数组的php文件: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
$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);
}
}
});