2014-10-31 51 views
0

我的目標是從使用PHP的mysql數據庫中獲取數據的數組,以用於javascript函數; graph()在下面的例子中。訪問使用jquery .load()創建的DOM元素()

我選擇通過加載我需要的數據到DOM元素來做到這一點。我現在試圖訪問它。查詢工作,我可以看到我的#loadTarget div中需要的信息。但我無法訪問innerHTML。根據Jquery文檔,我可以使用一個完整的函數,它將在加載完成後執行: .load(url [,data] [,complete]) 爲什麼然後,當我能看到數據庫數據I需要呈現在我的元素,我可以不使用getElementByID和innerHTML訪問它?

var dataLocation = document.getElementById(「arrayTargetOne」); var data = dataLocation.innerHTML;

以上返回數據爲空。如果我在父元素上執行相同的getElementById(不是在我的PHP .load文件中創建的那個,那個已經存在的文件),我可以看到我需要的數據。這就像.load函數不完整。我是否缺少一些輕微的或者我應該採取不同的方法?

的JavaScript/jQuery的

$(".selectUser").click(function() { 

var userChoice = document.getElementById(this.id); 
var user = x.innerHTML; 

$("#loadTarget").load("example.php",{"data":user},function() { 
var dataLocation = document.getElementById("arrayTargetOne"); 
var data = dataLocation.innerHTML; 
alert(data); 
graph(); 

}); 

的PHP

<?php 
$login_errors = array(); 
require ("config.php"); 
require (MYSQL); 

$arrayOne = array(); 
$arrayTwo = array(); 
$exampleQuery = $dbc->prepare("SELECT exampleFieldOne,exampleFieldTwo FROM exampleTable WHERE userID=? AND name=?"); 

$exampleQuery->bind_param('ss',$_SESSION['user_id'],$_POST['data']); 
$exampleQuery->execute(); 
$exampleQuery->bind_result($a,$b); 

while($exampleQuery->fetch()){ 

array_push($arrayOne,$a); 
array_push($arrayTwo,$b); 

} 

echo '<span id="arrayTargetOne">'; 
echo json_encode($arrayOne); 
echo '</span><span id="arrayTargetTwo">'; 
echo json_encode($arrayTwo); 
echo '</span>'; 
?> 

}); 
+0

如果你想從ajax調用數據,你真的應該使用'。.get()'來獲取數據到JavaScript,而不是先把它放到你的DOM中。 – jfriend00 2014-10-31 18:08:22

+0

謝謝。如果我將我的請求修改爲如下所示,那麼爲了傳回數據,PHP需要看起來像什麼?假設回聲json數組不會這樣做嗎?$。get(「example.php」,{「data」:user},function(data){alert(「Data:」+ data); }); – DVCITIS 2014-10-31 19:09:42

+1

您應該從PHP返回JSON並讓jQuery將它解析爲JavaScript對象作爲您的ajax結果。然後,您將爲您解析所有數據。 – jfriend00 2014-10-31 19:44:52

回答

0
var list = document.getElementById('loadTarget').children; 
for (var i=0, len = list.length; i<len; ++i) { 
    var data = list[i].nodeValue; //for text nodes, use innerHTML for elements 
    //do stuff with data 
} 

名單將在創建DOM節點列表。