2017-01-20 22 views
1

我做了一個簡單的php文件,它將數據從MySQL數據庫保存到2個數組中。我試圖將這兩個數組發送到js文件(這是從html文件單獨)。我正在嘗試學習AJAX,但似乎我沒有做正確的事情。通過AJAX分離JavaScript文件的PHP數組

你能解釋一下我做錯了什麼嗎?

我的PHP文件:get.php

<?php 
define('DB_NAME', 'mouse'); 
define('DB_USER', 'root'); 
define('DB_PASS', ''); 
define('DB_HOST', 'localhost'); 
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
if($link === false){ 
    die("ERROR: Could not connect. " . mysqli_connect_error()); 
}else{ 
    echo 'Successfuly connected to database :) <br/>'; 
} 
$sql = "SELECT x, y FROM mousetest"; 
$result = mysqli_query($link, $sql); 
$x_array = []; 
$y_array = []; 
if (mysqli_num_rows($result) > 0) { 
    while($row = mysqli_fetch_assoc($result)) { 
     echo "x: " . $row["x"]. " - y: " . $row["y"]. "<br>"; 
     array_push($x_array, $row["x"]); 
     array_push($y_array, $row["y"]); 
    } 
} else { 
    echo "0 results"; 
} 
echo json_encode($x_array); 
echo "<br>"; 
echo json_encode($y_array); 
mysqli_close($link); 
$cd_answer = json_encode($x_array); 
echo ($cd_answer); 
?> 

,這是我的JS文件:

$(document).ready(function(){ 
    $.ajax({ 
     type: "GET", 
     url: "get.php", 
     dataType: "json", 
     data : {anything : 1}, 
     success:function(data){ 
      var x = jQuery.parseJSON(data); // parse the answer 
      x = eval(x); 
      console.log(x.length); 
     } 
    }); 
}); 

我真的希望你明白,我所要做的。哪裏有問題?我真的認爲這應該工作,因爲我經歷了不少次,至少可以說...

+0

什麼是錯誤? –

+0

那麼我只是檢查它是否在控制檯登錄數組的長度,但它什麼都不做。我不明白問題在哪裏。這是問題:) –

+0

如果'console.log(data)'接收到了什麼? –

回答

2

您不能使用echo json_encode(...)兩次。客戶期望一個JSON對象,而不是一系列的JSON對象。

您應該讓每個數組成爲一個包含數組的元素,然後將其作爲JSON返回。

$result = array('x' => $x_array, 'y' => $y_array); 
echo json_encode($result); 

然後在jQuery的代碼,你可以使用:

var x = data.x; 
var y = data.y; 

此外,當您使用dataType: 'json',jQuery將自動當設置data解析JSON。您不應該撥打jQuery.parseJSON()eval()

+0

我改正了下面的代碼:get。php:$ result = array('x'=> $ x_array,'y'=> $ y_array) echo json_encode($ result);和js文件: $(文件)。就緒(函數(){$ 阿賈克斯({ 類型: 「GET」, 網址: 「get.php」, 數據類型: 「JSON」, 數據:{任何東西:1}, 成功:功能(數據){ VAR X = data.x; 變種Y = data.y; 的console.log(x.length); } }); });但它仍然不起作用... –

+0

對不起,它實際上工作!,謝謝! –