2017-03-06 81 views
0

此前我已经成功地访问在调用PHP数组回jQuery的AJAX功能,通过执行以下操作:阿贾克斯返回一个字符串,而不是数组

$.post('ajax.php', {name: name}, function(data) { 

       var obj = jQuery.parseJSON(data); 

       var item = obj[6] 

使用PHP之中:

$sql = "SELECT * FROM sales WHERE email = 'test' AND item = '$name' "; 
$result = mysqli_query($conn, $sql); 

    if ($result){ 
        $row = mysqli_fetch_array($result); 
        echo json_encode($row); 
        } 

我现在有一个稍微不同的情况,我不会想到一个问题,但是非常多:

PHP

$sql = "SELECT * FROM sales WHERE ".$searchwithin." BETWEEN '2017-02-01' AND  '2017-03-01'"; 

$result = mysqli_query($conn, $sql); 
    if ($result){ 
        while ($row = mysqli_fetch_assoc($result)){ 

        echo json_encode($row); 
        } 

当我做下面的Jquery:

var obj = data.length; 

alert(obj); 

我得到一个高得离谱的数字,它告诉我,它的计算字符串的长度,而不是数组长度;所以我想这是第一个问题,尽管貌似复制了一个成功的过去ajax,我现在得到一个字符串返回,而不是一个数组。

最后,我想这涉及到的第一个问题,每当我用

var obj = jQuery.parseJSON(data); 

它不喜欢它;我什么都没有收到,甚至没有收到警报,或者我收到了一个警报,并返回了“未定义”。

该数组应包含八个左右的十五列mysqli表行;我相信我可以使用诸如OBJ [5] [7]。但我不能尝试,因为它返回一个字符串,看起来,不是一个数组。我是新来的代码,并提前感谢。

哦,这是我所得到的,如果我只是做警报(数据):

{“ID”:“8”等}

+0

'json_encode' __must__是一次使用 –

+0

哦,我不知道那个笑。所以我创建了一个变量,在循环中存储数组,然后在变量的最后执行json_encode? – user1849962

+0

是的,它可能适用于您的第一代码,因为可能只返回1行。在循环中构建一个数组,然后编码/回显。 – AbraCadaver

回答

1

,当你在循环解码AJAX你有很多的对象,而不是一个。在Ajax得到回应类似{一些ROM} {一些ROW1} {一些ROW2}

你需要创建数组并将其推入循环数据进去,并对其进行解码的阵列

$myArray = array(); 
if ($result = $mysqli->query("SELECT * FROM phase1")) { 

    while($row = $result->fetch_array(MYSQL_ASSOC)) { 
      $myArray[] = $row; 
    } 
    echo json_encode($myArray); 
} 
+0

感谢此;我是否认为这个数组将是一个二维数组;如果是这样,我怎么说,第n列的第n行?我试过 - 在我的jquery - var obj = jQuery.parseJSON(data);警报(OBJ [5]); - 但这只是给我[对象对象]?也没有两个索引帮助... – user1849962

+0

@ user1849962转储数据 - console.log(数据)看到数组结构,在你的情况在obj [5]返回对象女巫包含你的db行,所以obj ['] columname' ]得到您的具体列行值 – bxN5

+0

谢谢;那完美的工作。 – user1849962