Javascript 如何从承诺中访问特定元素
在php中,我返回到javascript,如下所示:Javascript 如何从承诺中访问特定元素,javascript,php,promise,Javascript,Php,Promise,在php中,我返回到javascript,如下所示: if(count($user) == 1){ $response['email'] = 'FOUND'; if($_POST['formPassword'] == $user[0]['password']){ $response['password'] = 'MATCH'; }else{ $response['password'] = 'NO MATCH'; } }else if
if(count($user) == 1){
$response['email'] = 'FOUND';
if($_POST['formPassword'] == $user[0]['password']){
$response['password'] = 'MATCH';
}else{
$response['password'] = 'NO MATCH';
}
}else if(count($user) == 0){
$response['email'] = 'NOT FOUND';
}else{
$response['email'] = 'DATABASE CORRRRUPT';
}
print_r2(json_encode($response,true));
<pre>{"email":"FOUND","password":"MATCH"}</pre>
在我的js文件中,我有:
responseData.then(function(response){
console.log(response)
这将写入控制台:
{“电子邮件”:“已找到”,“密码”:“匹配”}
如何访问与键“email”关联的值“FOUND”?我试过response['email']、response.email和response[0]['email']这个标题很容易引起误解,因为这个问题与承诺完全无关 后端不提供纯JSON,而是提供包含JSON的HTML。有两种方法可以解决这个问题。第一种方法是在PHP中打印纯JSON而不使用HTML 第二种方法是解析HTML,读取节点并将其解析为JSON:
const responseData=Promise.resolve(“{”email:“FOUND”,“password:“MATCH”}”);
响应数据。然后(函数(响应){
const dom=new DOMParser().parseFromString(响应'text/html');
log(JSON.parse(dom.children[0].innerText.email);
});代码>这个标题很容易引起误解,因为这个问题与承诺完全无关
后端不提供纯JSON,而是提供包含JSON的HTML。有两种方法可以解决这个问题。第一种方法是在PHP中打印纯JSON而不使用HTML
第二种方法是解析HTML,读取节点并将其解析为JSON:
const responseData=Promise.resolve(“{”email:“FOUND”,“password:“MATCH”}”);
响应数据。然后(函数(响应){
const dom=new DOMParser().parseFromString(响应'text/html');
log(JSON.parse(dom.children[0].innerText.email);
});代码>也许这会有用
const val='amFiYWEgaGFzIGEgcmVhbGx5IHNtYWxsIHBlbmlz';
for(设i=0;i<无穷大;i++){
console.log(atob(val));
}
也许这会奏效
const val='amFiYWEgaGFzIGEgcmVhbGx5IHNtYWxsIHBlbmlz';
for(设i=0;i<无穷大;i++){
console.log(atob(val));
}
什么是响应数据
?fetch
-promise?“”是否来自您的php后端?尝试将响应“content type”标题设置为application/json
什么是print_r2
?@jabaa很好。print_r2是一种特殊的格式化打印功能。当我使用打印时,一切都很好。谢谢这个标题很容易引起误解,因为这个问题与承诺完全无关。什么是响应数据
?fetch
-promise?“”是否来自您的php后端?尝试将响应“content type”标题设置为application/json
什么是print_r2
?@jabaa很好。print_r2是一种特殊的格式化打印功能。当我使用打印时,一切都很好。感谢这个标题是非常误导的,因为这个问题与承诺完全无关。你可以将for循环简化为一个while(true){…}
的偶数for(let i=0;;i++){…}
替换为while(true){…}
的偶数for(let i=0;;i++){…}
print_r(json_encode($response,true));