Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在javascript中访问此关联数组?_Php_Javascript_Mysql - Fatal编程技术网

Php 如何在javascript中访问此关联数组?

Php 如何在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)

我有一个php文件,我从数据库中提取数据,我想用javascript访问它的内容。当我尝试访问数据为[0]的阵列时,卡id为“未定义”

这是我的javascript

$(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响应的黑客攻击称为“很好”。这是正确操作的替代品。