Php 如何在javascript中访问此关联数组?
我有一个php文件,我从数据库中提取数据,我想用javascript访问它的内容。当我尝试访问数据为[0]的阵列时,卡id为“未定义” 这是我的javascriptPhp 如何在javascript中访问此关联数组?,php,javascript,mysql,Php,Javascript,Mysql,我有一个php文件,我从数据库中提取数据,我想用javascript访问它的内容。当我尝试访问数据为[0]的阵列时,卡id为“未定义” 这是我的javascript $(document).ready(function() { var userId = 1; var updateUrl; $.ajax({ type: "POST", url: "url", data: {userId: userId}, success: function(data)
$(document).ready(function() {
var userId = 1;
var updateUrl;
$.ajax({
type: "POST",
url: "url",
data: {userId: userId},
success: function(data) {
alert(data[0].card_id);
var suffix = ".html";
fb.start('../Animations/' + updateUrl[0].card_id + suffix);
}
});
}
这是我的php文件
<?php
include('connect.php');
$user_id = $_POST['userId'];
$db = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL";
}
$select = "SELECT card_id FROM decks WHERE id=$user_id ORDER BY order_num";
$result = mysqli_query($db, $select);
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
$animation[] = array(
'card_id' => $row['card_id'],
);
}
json_encode($animation);
echo $animation;
mysqli_close($db);
?>
数组包含以下数据
排列
(
[0]=>吃东西
[1] =>木乃伊
等等。。
)您有两个问题
第一:您没有使用返回值json\u encode
执行任何操作
第二:PHP声称它正在发回HTML,因此无论如何它都不会被解析为JSON
header("Content-Type: application/json");
echo json_encode($animation);
您需要将
数据类型:“json”
添加到ajax调用中
$.ajax({
type: "POST",
dataType: "json",
url: "url",
data: {userId: userId},
success: function(data) {
alert(data[0].card_id);
var suffix = ".html";
fb.start('../Animations/' + updateUrl[0].card_id + suffix);
}
});
无需更改MIME类型,jQuery将处理此问题。您很容易受到需要对抗的攻击。感谢我阅读了有关sql注入的内容,我将在构建应用程序后尽快解决此问题。对不起,我是一个新手,我不明白您的答案,您能否详细介绍一下标题(“内容类型:application/json”); ? 我理解第二部分,我以前犯过这个错误:(当HTTP服务器用资源响应时,它会说明它是什么类型的资源。
application/json
表示“json文本”。text/html
表示“html文档”。image/png
表示“png格式的图像”.PHP将告诉服务器发送text/html
,除非您另有说明。jQuery将查看内容类型,并在将其放入data
之前使用该类型来决定对响应执行何种解析。谢谢,实际上,我是否只将标题放在PHP标记之后,如,这与将hea设置在何处无关在你给出任何输出之前,我会把它放在你的业务逻辑和视图逻辑之间(例如,我在答案中的示例中放在哪里)。除非您添加了标头,否则数据将被视为HTML,因此结果是可以预期的。如果在添加标头后仍然存在此问题,请使用console.log(data)
,以了解它到底是什么。告诉服务器说“这是JSON”比撒谎说“这是HTML”更有意义然后它会告诉jQuery忽略服务器声称的内容。我添加了数据类型,但在我的alertbox中仍然得到“未定义的”:(我不会将针对错误HTTP响应的黑客攻击称为“很好”。这是正确操作的替代品。