我通过检索JSON数据向我的数据库发送一些Google Book信息。我的代码在
之下$.ajax({
type: 'POST',
url: 'addIsbnScript.php',
data: {
'isbn' : isbn,
'title' : entry.volumeInfo.title,
'subtitle' : entry.volumeInfo.subtitle||'not available',
'author' : entry.volumeInfo.authors[0]||'not available',
'category' : entry.volumeInfo.categories ||'not available',
'description' : entry.volumeInfo.description ||'not available'
},
});
addIsbnScript.php
$title = $_POST['title'];
$category = $_POST['category'];
$author = $_POST['author'];
$isbn = $_POST['isbn'];
$subtitle = $_POST['subtitle'];
$description = $_POST['description'];
$query = $conn->prepare("INSERT INTO `book` (title,category,author,isbn,subtitle,description) VALUES (?,?,?,?,?,?)");
$query->bind_param('ssssss',
$title,
$category,
$author,
$isbn,
$subtitle,
$description
);
$query->execute();
大部分时间所有数据都成功发送,但我注意到了两件事;
如果JSON中有多个类别,则单词' Array'是 发送到我的数据库。
如果JSON中没有作者,我的脚本就不能运行了 在控制台中收到以下错误;
未捕获的TypeError:无法读取属性' 0'未定义的
JS和PHP非常新,所以欢迎任何建议和指导。
答案 0 :(得分:1)
在使用数组下标entry.volumeInfo.authors
之前,您需要检查[0]
是否存在。
'author' : (entry.volumeInfo.authors ? entry.volumeInfo.authors[0] : 'not available'),
如果类别与作者类似,则可以对类别执行类似的操作:
'category' : (entry.volumeInfo.categories ? entry.volumeInfo.categories[0] : 'not available'),
上面,我使用ternary operator添加条件内联。