[問題] jquery 如何取回資料庫內的資料

看板Ajax作者 (水餃)時間12年前 (2012/03/01 18:17), 編輯推噓1(1033)
留言34則, 3人參與, 最新討論串1/1
目前有兩個問題, 想請教版上各位先進 第一個問題: 我使用getJSON的方法,將id送到php處理 根據id,資料庫取得相對應的資料,資料如下 drama[i]['brand'], drama[i]['action'],drama[i]['seq'] 以上三筆都是陣列 i = 0 ~ N , 問題:不知道怎麼樣能夠一次傳回這三個陣列 ? 第二個問題 在div中,有兩種元素 <img class='DramaPic' id='GO' style='display: none'> <img class='DramaPic'id='GO'> 問題:請問如何只取得<img class='DramaPic'id='GO'> ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.164.148

03/01 18:25, , 1F
1. 用json_encode包json回來 2. $("img:visible")?
03/01 18:25, 1F
1. 如果單純用json包,像這樣:json_encode($drama) 結果會顯示(object,object) 2.這個方法可以囉,感謝。但如果我有兩個以上的元素要逐一用alert顯示 請問該如何處理? ※ 編輯: sweetjp6 來自: 140.117.164.148 (03/01 18:40)

03/01 19:07, , 2F
1.看無 該不會直接alert 回傳的data吧..2. .each
03/01 19:07, 2F

03/01 19:10, , 3F
php echo json_encode($var)
03/01 19:10, 3F

03/01 19:12, , 4F
jQ callback function(data){var reply=$.parseJSON(data);}
03/01 19:12, 4F

03/01 19:13, , 5F
php 所有資料包成一個物件,js 收到解開就是同樣的物件
03/01 19:13, 5F

03/01 19:14, , 6F
2. id 不要重複
03/01 19:14, 6F
1. 我在php的處理方式是這樣 //從資料庫取出資料 for($i=0; $i< $num_cont ; i++ ) $drama[] = mysql_fetch_array($query_content); echo json_encode($drama); 在jquery: //接收 callback: function(Drama){ for (var i=0; i<Drama.length ;i++){ $('body').append(Drama[i]['action']","Drama[i]['brand']"," Drama['seq']); } } 但這時候收到的Drama內容顯示出來是 [object,Object] 2.感謝y大,但我的id 一定是要一樣的 也謝謝n大的提示 ※ 編輯: sweetjp6 來自: 140.117.164.148 (03/01 20:07)

03/01 21:01, , 7F
[object Object] 就是 Object 原本的 toString() 所產生
03/01 21:01, 7F

03/01 21:02, , 8F
的字串; 結果不如預期就改用 console.log 看看是什麼吧
03/01 21:02, 8F

03/01 21:03, , 9F
google chrome 之類的 console.log 可以看到完整的
03/01 21:03, 9F

03/01 21:03, , 10F
object 葫蘆裡到底裝了什麼藥..
03/01 21:03, 10F

03/01 21:04, , 11F
至於 id 一定要一樣.. 還真頭一次聽人這樣子說..
03/01 21:04, 11F

03/01 21:05, , 12F
直覺上再奇怪的需求也能避開 id 重複的問題
03/01 21:05, 12F
感謝C大指點,但是否能說明一下console.log如何使用,我是用chrome,謝謝。 id一樣是因為我的元素是用drag&drop 拖拉的 style='display: none'只是因為圖片被丟回原本的地方,而刪除圖片的話會造成我 後續的問題,所以才會選擇隱藏。這麼看來,id是一定不會變的吧。 ※ 編輯: sweetjp6 來自: 140.117.164.148 (03/01 21:18)

03/01 21:38, , 13F
$all_data=array();
03/01 21:38, 13F

03/01 21:38, , 14F
while($row=mysql_fetch_assoc($query_result))
03/01 21:38, 14F

03/01 21:38, , 15F
array_push($all_data, $row);
03/01 21:38, 15F

03/01 21:38, , 16F
echo json_encode($all_data);
03/01 21:38, 16F

03/01 21:39, , 17F
這樣子 $all_data 就是完整的二元陣列
03/01 21:39, 17F

03/01 21:40, , 18F
client callback: function(data)
03/01 21:40, 18F

03/01 21:40, , 19F
{ var reply=$.parseJSON(data);
03/01 21:40, 19F

03/01 21:41, , 20F
for(var i in reply)
03/01 21:41, 20F

03/01 21:42, , 21F
{ for(var j in reply[i])
03/01 21:42, 21F

03/01 21:43, , 22F
{ do something with reply[i][j]... }
03/01 21:43, 22F

03/01 21:43, , 23F
}}
03/01 21:43, 23F
請問y大, $row是什麼意思? 謝謝各位幫忙,第二個問題已經解決囉。 ※ 編輯: sweetjp6 來自: 140.117.164.148 (03/01 21:44)

03/01 21:45, , 24F
$row = 暫存變數
03/01 21:45, 24F

03/01 21:47, , 25F
資料庫取陣列用 mysql_fetch_assoc 較省記憶體
03/01 21:47, 25F

03/01 21:48, , 26F
js 的 reply 完全等於 $all_data
03/01 21:48, 26F

03/01 21:52, , 27F
id 重複的話,js 使用任何以 id 取 dom,只會抓到第一個
03/01 21:52, 27F

03/01 21:54, , 28F
html 規範中 id 只能是 unique
03/01 21:54, 28F

03/01 21:55, , 29F
你可以在 id 後面 concat 自定字元來區分
03/01 21:55, 29F

03/01 21:56, , 30F
例如 id="XX_001", id="XX_002"... 然後自己再抓"XX"出來
03/01 21:56, 30F

03/01 21:57, , 31F
就是不要讓 id 重複
03/01 21:57, 31F

03/02 09:20, , 32F
chrome 的話 F12 跳出開發人員工具, 隨便點一下按然後
03/02 09:20, 32F

03/02 09:20, , 33F
按個 esc 就會跳出 javascript console 裡面就會有 log
03/02 09:20, 33F

03/02 09:21, , 34F
點一點就可以展開看你 log 的物件長什麼樣子
03/02 09:21, 34F
文章代碼(AID): #1FJqokG1 (Ajax)