Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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无法将所选表中的数组填充为json_编码并在javascript上接收它_Javascript_Php_Jquery_Mysql - Fatal编程技术网

PHP无法将所选表中的数组填充为json_编码并在javascript上接收它

PHP无法将所选表中的数组填充为json_编码并在javascript上接收它,javascript,php,jquery,mysql,Javascript,Php,Jquery,Mysql,我正在基于JqueryMobile构建一个混合应用程序。现在我正试图获得一个简单的数组,其中包含我从mysql表中选择的类别。我看到了许多与此相关的问题,并尝试了上千种解决方案,但都没有奏效 以下是我所拥有的: PHP代码: $sql=mysql_query("SELECT Tipo FROM tfc_db.Category "); $id=array(); while($row = mysql_fetch_assoc($sql)) { $id[] = $row; //$id[

我正在基于JqueryMobile构建一个混合应用程序。现在我正试图获得一个简单的数组,其中包含我从mysql表中选择的类别。我看到了许多与此相关的问题,并尝试了上千种解决方案,但都没有奏效

以下是我所拥有的:

PHP代码:

$sql=mysql_query("SELECT Tipo FROM tfc_db.Category ");
$id=array();

while($row = mysql_fetch_assoc($sql)) {
    $id[] = $row;
    //$id[] = $row['Tipo']; doesn't work either
}
echo json_encode($id);

mysql_close($conn);
有了这个,我得到了一个空白的结果

我得到的最接近的结果是:

$id=array();
$i=0;
while ($row = mysql_fetch_assoc($sql)) { 
    $id[] = array("data$i" => $row['Tipo']);
    echo json_encode($id[$i]);
    $i++;
}
结果是:

{"data0":"Restaurantes"}{"data2":"Shopping"}{"data3":"Eventos"}{"data4":"Hoteis"}{"data5":"Oficinas"}{"data6":"Combustiveis"}
但这显然是错误的,因为它有多个json_编码调用

我正试图用Jquery的$get获得它

<script type="text/javascript">
 var inicio=function(argument){
    $("#submit").click(function(e){
        e.preventDefault();
        $.get('http://myurl/get_category.php',{ 
        },function(answer){
        alert(answer.length+" "+answer);         //trying to know whats happening with the data.
        for (var i = 0; i < answer.length; i++) {   //my final objective is to fill a listview.
            $('#list').append("<li> <h3>"+answer.tipo+"</h3></a></li>");
        }
        $('#list').listview('refresh');
        },"json"
        );
    });
}
$(document).on('ready',inicio);
</script>
正如我所说,我搜索了许多问题和解决方案,但总是得到空值。我没有太多的PhP经验,这是我学习JqueryMobile的经历,所以。。这里有点不对劲,我看不见


谢谢。

您可以使用以下查询:

$sql=mysql_query("SELECT Tipo FROM tfc_db.Category ");
$id=array();

while($row = mysql_fetch_assoc($sql)) {
    $id[] = $row['Tipo'];
}
echo json_encode($id);

mysql_close($conn);
它将以JSON字符串数组的形式返回类别。e、 g.[条目1,条目2]。如果您决定使用它,那么您需要调整Javascript代码。 您的javascript代码在这一行中包含一些问题:

    $('#list').append("<li> <h3>"+answer.tipo+"</h3></a></li>");
在PHP中,列名将命名为Tipo,而不区分大小写。第二个问题是,您试图访问的是answer.tipo,而不是数组answer[i].tipo的元素

因此,使用当前的php代码,您可以通过更改javascript使其正常工作。 这条线

 $('#list').append("<li> <h3>"+answer.tipo+"</h3></a></li>");

编辑:因为你显然有问题,这里是我使用的完整代码

//query.php
<?php
    mysql_connect ('localhost','username','password');
    mysql_select_db('db_test');
    $sql=mysql_query("SELECT Tipo FROM db_test.Category ");
    $id=array();

    while($row = mysql_fetch_assoc($sql)) {
        $id[] = $row;
    }

    echo json_encode($id);
    mysql_close($conn);
?>

试试这样的

如果只想获取列“Tipo”的值

$sql=mysql_query("SELECT Tipo FROM tfc_db.Category ");
$id=array();
$i=0;
while($row = mysql_fetch_assoc($sql)) {
    $id["data".$i] = $row['Tipo'];
    $i++;
}
echo json_encode($id);
mysql_close($conn);
如果你不想得到所有的值

$sql=mysql_query("SELECT Tipo FROM tfc_db.Category ");
$id=array();
$i=0;
while($row = mysql_fetch_assoc($sql)) {
    foreach($value as $key=>$value){
        $id["data".$i][$key] = $value;
    }
    $i++;
}
echo json_encode($id);
mysql_close($conn);
[菲律宾]

[JS]

在这上面找到了解决方案
DB上的所有内容都必须设置为UTF-8或utf8mb4,现在它终于可以工作了。A感谢所有人的帮助:

我已经尝试过这个查询,这就是为什么我对它进行了评论,但我没有尝试回答[I]。Tipo,但是的,它也不起作用。。我的页面上什么也没有发生,get_category.php页面也没有显示任何输出。我只是在自己的Web服务器上尝试了一下,没有出现任何问题?我将用我用来测试的完整代码更新我的帖子。还要检查您的错误日志,看看是否有任何错误?也许您缺少mysql\u连接?或者mysql_select_db?不,因为我已经从我的db中获得了其他数据,在我的帖子中,我显示了我得到的最接近的输出,我无法从表中获取这些值,所以连接不是问题。未捕获的TypeError:无法读取未定义的属性“Tipo”。我现在明白了,你能在webbrowser中加载页面,打开javascript/开发者控制台并输入debug吗?调试变量中的内容。如果您查询Tipo,mysql_query很可能会返回数据库中列的名称,但是它在表中被称为Tipo,在输出中被称为Tipo,请验证outputdebug给我的大小写是否正确?oO:function debugfn{[Command Line API]}列是Tipo yes。php页面的输出是[],因此它不会工作,但是我应该在JS上使用什么来从中获取任何信息?您是否检查了$sql是否已填充?如果没有检查,请在执行mysql\u查询之后添加一个var\u dump$sql并打印\r$sql,并检查$sql是否有来自表的值。mysql result Resource id 3类型的resource3会给出这个值,但如果I$rowz=mysql\u fetch\u assoc$sql,则是;和echo$rowz['Tipo'];它给了我列的第一行,并且没有在脚本中使用其他打印数据?不,只有这一行。我用var答案尽可能地提醒所有人,以便得到任何结果。我得到的最好结果是在JSON.parse之后,它给了我一个包含字符串每个字符的数组
<html>
  <head>
    <title> JQuery db test </title>
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
  </head>
  <body>
    <div id='list' class='list'>
    </div>
    <script>
        var debug;
        $.get('http://www.example.com/test/query.php',{ 
        },function(answer){
            debug=answer;
        //alert(answer.length+" "+answer);         //trying to know whats happening with the data.
        for (var i = 0; i < answer.length; i++) {   //my final objective is to fill a listview.
            $('#list').append("<li> <h3>"+answer[i].Tipo+"</h3></a></li>");
        }
       // $('#list').listview('refresh');
        },"json"
        );
    </script>
</html>
$sql=mysql_query("SELECT Tipo FROM tfc_db.Category ");
$id=array();
$i=0;
while($row = mysql_fetch_assoc($sql)) {
    $id["data".$i] = $row['Tipo'];
    $i++;
}
echo json_encode($id);
mysql_close($conn);
$sql=mysql_query("SELECT Tipo FROM tfc_db.Category ");
$id=array();
$i=0;
while($row = mysql_fetch_assoc($sql)) {
    foreach($value as $key=>$value){
        $id["data".$i][$key] = $value;
    }
    $i++;
}
echo json_encode($id);
mysql_close($conn);
$id = array();
while($row = mysql_fetch_assoc($sql))
    $id[] = $row['Tipo'];
echo json_encode($id);
$(document).ready(function(){
    $('#submit').click(function(e){
        $.ajax({
            url: '/get_category.php',
            type: 'GET',
            dataType: 'json'
        }).done(function(res){
            $('#list').html('');
            for(var i=0;i<res.length;++i)
                $('#list').append('<li><h3>'+res[i]+'</h3></li>');
        });
});