2011-04-25 151 views
0

我正在PHP CMS上工作,並且陷入了困境和困境,那些是CSS和AJAX。我試圖弄清楚的問題是如何讓AJAX/JSON和PHP返回可以填充到表單中的值。通過JSON/Ajax從PHP返回值

在我的一個網頁上我有一個帶有選擇列表的表單。當用戶從列表中選擇一個選項時,AJAX腳本請求來自PHP文件的響應,該文件將結果輸出回瀏覽器。這工作正常。

然而,jquery/CSS不會在返回的結果中設置複選框等特定元素。

我想要做的是向用戶提供一個窗體,頂部有一個選擇菜單,下面是空的輸入字段。當他們從菜單中選擇一個選項時,下面的表單域將填充返回數據。表單本身由文本字段,文本區域和選擇列表組成,我希望每個人都更新它們的值以匹配相應的返回數據。

首先...這是可能的嗎?其次......如果它,你能指出我在正確的語法流程方面還是我可以學習的示例腳本。

在此先感謝。

+0

是的CSS和Ajax吸=) – Rudie 2011-04-25 02:44:23

回答

0

是的,可能的並不是很難實施。比方說,你的HTML看起來像這樣(這顯然是醜陋的;)):

<select id="update"> 
    <option value="0">0</option> 
    <option value="1">1</option> 
    <option value="2">2</option>  
</select> 
<form action="#" method="POST"> 
    <label for="txt">Text:</label><input type="text" id="txt"/><br/> 
    <label for="sel">Select:</label><select id="sel"></select><br/> 
    <label for="txta">TextArea:</label><textarea id="txta"></textarea><br/> 
</form> 

你可以寫上去的是填充在success響應表單數據,像這樣一個快速的jQuery Ajax請求:

$(document).ready(function(){ 
    $('#update').change(function(){ 
     $.ajax({ 
      url: '/echo/json/', 
      dataType: 'json', 
      type: 'POST', 
      data: { 
       'json': $('#update').val() 
        }, 
      success: function(data){ 
       $('#txt').val(data); 
       $('#sel option').remove(); 
       $('#sel').append($('<option></option>').attr('value', data).text(data)); 
       $('#txta').val(data); 
      } 
     }); 
    }); 
}); 

Fiddle here

注意你的腳本將取決於你正在推動數據代入式(如T的元素他在輸入文本,textarea和select中的區別)。

+0

謝謝你們的幫助。我已經把你的幫助中借用的東西放在一起,並且在所有最新的瀏覽器版本中工作正常。 – 2011-04-25 05:39:41

0

解決方案很簡單:

  1. 店內所有的onload/domready中的新功能(pimpHTML或東西)功能。
  2. 運行它的onload/ondomready>複選框等風格
  3. 來看,它的每個DOM變化(半自動地)

0.3後。並不難。只要創建一個功能setHtml(obj, html)(或某事),其插入響應HTML爲節點,然後重做pimpHTML

準備:

function pimpHTML() { 
    // checkboxes 
    // radiobuttons 
    // ajax links 
    // etc 
} 
$(pimpHTML); // or $(documemt).ready(pimpHTML); 
function setHtml(obj, html) { 
    obj.html(html); 
    pimpHTML(); 
} 

半內聯:

var obj = ...; // form or messagebox or something 
$.post('/', function(rsp) { 
    setHtml(obj, rsp); 
}); 

顯然,這是不喜歡做這一點,你必須改善和自己指定它。