Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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
Javascript PHP和JQuery-PHP json_编码的2D数组不';我们没有到达jqueryajax_Javascript_Php_Jquery_Arrays_Ajax - Fatal编程技术网

Javascript PHP和JQuery-PHP json_编码的2D数组不';我们没有到达jqueryajax

Javascript PHP和JQuery-PHP json_编码的2D数组不';我们没有到达jqueryajax,javascript,php,jquery,arrays,ajax,Javascript,Php,Jquery,Arrays,Ajax,我试图创建一个演示程序,从运行SQL查询的PHP脚本中获取数据,获取关联的数组,并对其进行json_编码,然后将其返回给调用PHP文件中的JQuery ajax调用方。由于某些原因,它从未到达(请咨询Firebug)。但是如果我手动创建一个2D数组,并对其进行json_编码,它就可以正常工作。我完全被难住了,为什么我的数组从来没有从SQL中生成,但如果我只是手工键入它,它就会生成。我对结果字符串进行了区分,它们完全相同 代码: PHP文件: <?php header('Content-Ty

我试图创建一个演示程序,从运行SQL查询的PHP脚本中获取数据,获取关联的数组,并对其进行json_编码,然后将其返回给调用PHP文件中的JQuery ajax调用方。由于某些原因,它从未到达(请咨询Firebug)。但是如果我手动创建一个2D数组,并对其进行json_编码,它就可以正常工作。我完全被难住了,为什么我的数组从来没有从SQL中生成,但如果我只是手工键入它,它就会生成。我对结果字符串进行了区分,它们完全相同

代码:

PHP文件:

<?php
header('Content-Type: application/json');
error_reporting(0); // prevents a notice from breaking ajax
//session_start();
$username = $_GET['username'];
$json = array();
$test = array(
    array("id"=>4,"first_name"=>"Miles","last_name"=>"O'Brian"),
    array("id"=>5,"first_name"=>"Jean Luc","last_name"=>"Picard"),
    array("id"=>6,"first_name"=>"Reginald","last_name"=>"Barclay")
          );

$mysqli = new mysqli('mydomain', 'myuser', 'mypassword', 'mydb');
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
if ($stmt = $mysqli->prepare("SELECT `id`, `first_name`, `last_name` FROM client WHERE provider_username = ?")) {
    $stmt->bind_param('s', $username);
    $stmt->execute();
    $result = $stmt->get_result();


    while ($row = $result->fetch_assoc()) {
        $json[] = $row;
    }

    $result->close();
}

$mysqli->close();
echo json_encode($json);
echo json_encode($test);// this works
?>    

你能把你的结果集发布在这里吗?这是satement返回的结果集。
$result->fetch_assoc()

请检查您的php版本。因为在PHP5.4中可以使用代码“$json[]=$row;”中使用的shorten方法添加数组元素。查看更多信息

第二个选项如果在PHP版本中不可用,则可以通过以下方式实现:
数组推送($json,$row);而不是$json[]=$row

我解决了我的问题。Ajax中我设置数据的行:

data: { username: $('#staff_list').val() }
这是问题的根源。出于某种原因,它得到了一个数组,形成了一条直线

data: { username: $('#staff_list').val()[0] }

已修复问题。

是否必须尝试打开错误报告?还有支票?而不是
console.log('results')
,而是将响应放入
console.log(results)
(不带引号)?是否有任何用户具有确切的用户名's'?您在sql中使用了“=”,这里可能是“像”的意思,这是从sql:[{“id”:7,“first_name”:“Tom”,“last_name”:“Cruise”},{“id”:8,“first_name”:“John”,“last_name”:“Cusak”}编码的结果数据集的精确副本这是该数组的打印输出:array([0]=>array([id]=>7[first\u name]=>Tom[last\u name]=>Cruise[1]=>Array([id]=>8[first\u name]=>John[last\u name]=>Cusak))记住:每个jQuery DOM选择器函数
$(某物)
都返回一个数组<代码>$(“#员工列表”).first().val()
可能是您想要的。
data: { username: $('#staff_list').val()[0] }