我做了一個網頁,左邊的一列是逐條顯示的記錄名,是我通過迴圈語句從mysql中讀取並每行顯示出來的。而右邊是每條記錄的具體內容架構(就是很多空框)。希望實現的目標是:點擊左邊任何一條記錄名稱,在右邊的各個空框中就具體顯示出該記錄具體內容(其實就是每個欄位的內容給填充到每個空框中去)。
該用怎樣的簡單架構實現左邊的記錄名稱可點擊呢?然後又傳遞什麼變數來控制讀取記錄,把具體記錄資訊從mysql讀取出來呢(貌似有了該記錄內容,顯示在各個空框中不難,我可以完成這一步)?當然該每條記錄的具體內容在mysql都已經存在,查詢即可。
這裡的大牛們請多多幫忙啊,這是我第一次問問,事關緊急啊。謝謝。
回複討論(解決方案)
用ajax做吧
當你點擊左側的記錄名時,將記錄名用ajax傳到後台去查詢對應的全部資訊 返回後填充至框框內
謝謝回複。
採用ajax,小弟是新手,那大概用到哪些重要語句或者關鍵點,甚至有沒有連結案例啥的讓我琢磨琢磨呢?
萬分感激啊。
稍等我給你寫個demo
萬分感謝先。
demo地址 http://www.colg.biz/demo/d1.php
代碼
顯示頁
處理請求頁
".$each."";}}echo json_encode($html);exit;}?>
汗...帳號密碼都泄露了....
改之
非常感謝!
下個問題是:怎麼把分數給你?是不是只是結貼即可?
追問:
你這裡分為主程式和處理頁面程式,第二個處理頁面程式應該就是ajax.php吧? 似乎應該要求改ajax.php和住程式處在同一個目錄下,對吧?
追問:
你這裡分為主程式和處理頁面程式,第二個處理頁面程式應該就是ajax.php吧? 似乎應該要求改ajax.php和住程式處在同一個目錄下,對吧?
完全可以不同一個目錄 寫路徑就好了 研究下"html路徑"
非常感謝,這位大牛,這正是我想要的效果。
我再琢磨一下細節,若有細節問題,還請不吝賜教。
不客氣 都是新人,學習中 多多交流 共同進步 有問題直接提,可以引用我的回複這樣我可以及時看到提醒
demo地址 http://www.colg.biz/demo/d1.php
代碼
顯示頁
處理請求頁
".$each."";}}echo json_encode($html);exit;}?>
在我想完成的這個頁面中,右邊的空框基本都是空框(基本如這個程式所顯示的),但有一項是單選項(輸入表單,採用radio的方法)。我這個頁面的準系統是在右邊空框以及選擇該單選項,點擊右邊下方儲存鍵,則該記錄存入mysql,同時該新記錄在左邊一列顯示出來(已實現上述功能)。
現在我點擊左邊某記錄,如你demo顯示,應該能顯示相關內容(我還在學習細節),但右邊其中這項單選項顯示有困難。比如,我從資料庫中讀取兩選項其中之一的值(1或者2),如何在單選項上表示出呢(因為先前單選項前的小圓圈都是空心的,若選擇了其中一項,變成實心的小圓圈)?
謝謝先啊。
你是希望點擊左側後 右邊兩項都未選還是已選中其中一項?
它們的差別就是後者在選中的那個input標籤內有一個 checked="checked" 而已
你是希望點擊左側後 右邊兩項都未選還是已選中其中一項?
它們的差別就是後者在選中的那個input標籤內有一個 checked="checked" 而已
現有的輸入表單大致為:
form action="main/inputDriver.php" method="post">
選項一
// 其中一些格式規定,這裡略去
選項二
點擊左側後,記錄資訊在右邊顯示出來。而右邊的這項單選項(有兩個選項),我希望其中一項已經被選擇,資料來自資料庫(1或者2,而兩選項的值在表單中已經設定)。問這個問題,主要擔憂與前面的輸入表單衝突,不能兼顧。
問你問題時,自己都感覺汗顏呐,我這個新手太新了。
你ajax採用"PHP返回全部HTML"還是採用"PHP返回數組用js來處理"?
如果是前者 直接輸出為
form action="main/inputDriver.php" method="post">
選項一
// 其中一些格式規定,這裡略去
選項二
至於這個 checked="checked"出現在哪裡,在ajax指向的php程式裡判斷和輸出
如果採用後者,js處理數組時用相關欄位進行判斷並對需要選中的加上這個 checked="checked"即可.
你ajax採用"PHP返回全部HTML"還是採用"PHP返回數組用js來處理"?
如果是前者 直接輸出為
form action="main/inputDriver.php" method="post">
選項一
// 其中一些格式規定,這裡略去
選項二
至於這個 checked="checked"出現在哪裡,在ajax指向的php程式裡判斷和輸出
如果採用後者,js處理數組時用相關欄位進行判斷並對需要選中的加上這個 checked="checked"即可.
好好體會一下先。
這裡,小弟先深深作揖謝過。
你ajax採用"PHP返回全部HTML"還是採用"PHP返回數組用js來處理"?
如果是前者 直接輸出為
form action="main/inputDriver.php" method="post">
選項一
// 其中一些格式規定,這裡略去
選項二
至於這個 checked="checked"出現在哪裡,在ajax指向的php程式裡判斷和輸出
如果採用後者,js處理數組時用相關欄位進行判斷並對需要選中的加上這個 checked="checked"即可.
結合我的問題,肯定是採用php返回數組的方式最好。
我仔細看了你的代碼,在給你給出的demo中,是不是採用的是php返回全部html的方法?
如果我需要php返回數組的方式,那就需要demo部分中的程式,主要的是第二段程式中foreach迴圈該做如何細節改變呢?
呵呵,細節方面總是搞不出來。
demo地址 http://www.colg.biz/demo/d1.php
代碼
顯示頁
處理請求頁
".$each."";}}echo json_encode($html);exit;}?>
你提供的這個demo還是非常具有啟發性的。在結合我的實際編程時,出現了不少問題,主要有:
1. ajax.php回複的資訊是從mysql資料庫中讀取一個記錄各個欄位內容所連成的一串string,這正好與你demo中比較簡單的空框相吻合,結果很不錯。而我這個頁面右方,不僅有單選項,其他空框之間有文字(其實就是該空框內容的解說文字),而且還有很多格式設定的代碼。為了達成前面輸入表單的結果,空框裡雖空,但裡面實際上有代碼,比如:
所以demo中採用全部html返回形式,我很難把內容分割開嵌入各個空框中。所以,今天試了很長時間,結論是採用JS數組把從mysql查詢的內容進行返回,這是比較好的方式。但代碼該如何變化呢?
2.上面的問題是主要問題,如果上面這個問題解決了,我就可以自己進行判斷,並在單選項中採用check="checked"的方法解決了。
花了好長時間來試,最終總結為這個問題。呵呵,求助啊。
今天太晚了明天白天給你寫.... 晚上的時間都給WOW了..
今天太晚了明天白天給你寫.... 晚上的時間都給WOW了..
這裡先謝謝了。
demo地址 http://www.colg.biz/demo/d1.php
表結構和內容
顯示頁面代碼
ajax接收處理頁面代碼
返回數組用JS分析後插入指定位置 不管你是什麼結構都可以實現 萬變不離其宗
用ajax做吧
當你點擊左側的記錄名時,將記錄名用ajax傳到後台去查詢對應的全部資訊 返回後填充至框框內
demo地址 http://www.colg.biz/demo/d1.php
表結構和內容
顯示頁面代碼
ajax接收處理頁面代碼
返回數組用JS分析後插入指定位置 不管你是什麼結構都可以實現 萬變不離其宗
非常感謝。
是啊,正在學習“宗”,細節體會中。
外邊方框不見了? 那你仔細觀察下html結構 只改需要改的資料不動其他的東西 只改資料絕對不會引起方框不見吧 除非是長度高度問題導致CSS沒有約束到
2.eq(1) 找的是第二個 eq(2) 找的是第三個 你確定你沒寫錯?
另外可以這樣寫
var type = msg.type;
if(type == 1)
{
$(".show_1 > input[name='type']:eq(1)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(2)").removeAttr("checked");
}
else
{
$(".show_1 > input[name='type']:eq(2)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(1)").removeAttr("checked");
}
另外 type之類的關鍵字用起來看得心驚肉跳的..... 希望這種地方不要出問題
外邊方框不見了? 那你仔細觀察下html結構 只改需要改的資料不動其他的東西 只改資料絕對不會引起方框不見吧 除非是長度高度問題導致CSS沒有約束到
2.eq(1) 找的是第二個 eq(2) 找的是第三個 你確定你沒寫錯?
另外可以這樣寫
var type = msg.type;
if(type == 1)
{
$(".show_1 > input[name='type']:eq(1)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(2)").removeAttr("checked");
}
else
{
$(".show_1 > input[name='type']:eq(2)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(1)").removeAttr("checked");
}
另外 type之類的關鍵字用起來看得心驚肉跳的..... 希望這種地方不要出問題
謝謝先。
我這個第一選項賦值為1,第二選項賦值為2。我按照你給的語句運行了,結果是:每次值為2時,兩個選項為空白,值為1時,第二個選項為選中(但事實上,第二個選項應該值為2)。
我想哪裡的細節正好有差錯1.下面是代碼(我把變數type改為driverType了):
var driverType = msg.type;
if(driverType == 1)
{
$(".show_1 > input[name='type']:eq(1)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(2)").removeAttr("checked");
}
lse
{
$(".show_1 > input[name='type']:eq(2)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(1)").removeAttr("checked");
}
2.至於方框不見了,啟動並執行結果為:
但實際上,原來的狀態為:
html部分的代碼為:
這個是一整段這部分的代碼,包括各個方框的前後內容。
我懷疑是不是...中包含導致填進去ajax返回的內容時,...也被替換了?
你以前是input的邊框 現在input都被你替換掉了
有兩個解決方案 一是直接把數值插入input的value中
二是還按現在的寫 然後給td加邊框讓其看起來像之前的
給你寫的td.html(xxx) 並不是一定要死板的這麼寫 你td裡邊有內容 就隨之變化
你以前是input的邊框 現在input都被你替換掉了
有兩個解決方案 一是直接把數值插入input的value中
二是還按現在的寫 然後給td加邊框讓其看起來像之前的
給你寫的td.html(xxx) 並不是一定要死板的這麼寫 你td裡邊有內容 就隨之變化
把數值插入input的value中,這個又應該怎麼改呢?
你說“給你寫的td.html(xxx) 並不是一定要死板的這麼寫 你td裡邊有內容 就隨之變化”,意思其實是不僅td可以用,像
都可以這樣用是嗎?
還有,我看demo以及我隨之也用的是$(".show_6").text(..),但ajax中還有$.post()這個函數時,好像就寫成$("#show_6").text(..),這兩個.show_6和#show_6是不能混用的吧?
這個問題問到現在,太感謝了。
你以前是input的邊框 現在input都被你替換掉了
有兩個解決方案 一是直接把數值插入input的value中
二是還按現在的寫 然後給td加邊框讓其看起來像之前的
給你寫的td.html(xxx) 並不是一定要死板的這麼寫 你td裡邊有內容 就隨之變化
把數值插入input的value中,這個又應該怎麼改呢?
你說“給你寫的td.html(xxx) 並不是一定要死板的這麼寫 你td裡邊有內容 就隨之變化”,意思其實是不僅td可以用,像
都可以這樣用是嗎?
還有,我看demo以及我隨之也用的是$(".show_6").text(..),但ajax中還有$.post()這個函數時,好像就寫成$("#show_6").text(..),這兩個.show_6和#show_6是不能混用的吧?
這個問題問到現在,太感謝了。
使用$.ajax()時,所需要填入的地區用class=".."來標記,而使用$.post()時,是用id=“..”來標記的。這兩種標記方式可以混用嗎?或者是$.ajax()也可以用$("#show_6").text(..),但此時必須用id=“..”來標記?
可以混用 都是選取器而已對jquery來說並沒有任何區別
比如 $(".show_tr > td:eq(1)").text(msg.col1);
既然你td內有input並且不能把input粗暴的替換掉
可以寫成 $(".show_tr > td:eq(1) >input").val(msg.col1);
你先試試 jquery的選取器是非常靈活的 可以各種套用