Ajax 使用prototype.js 1

Posted in ajax, javascript on 2009/5/13 by yku 瀏覽:730人次 — 5 回應

ajax在使用上因為不同的browser會有不同的XMLHttpRequest物件

所以在設定上會顯的麻煩

而prototype.js就是一個方便的script framework可以讓你不用考慮環境上的因素

而進行快速的ajax開發

prototype的官方網站

http://www.prototypejs.org/

這裡有api 可以下載回來看

http://www.prototypejs.org/api

一.簡介prototype.js

1.$("物件id")   =   document.getElementById("物件id")

ex.

$("物件id").getValue()   =   document.getElementById("物件id").value

function請參考api

2.$A("物件Name") = document.getElementByTagName("物件Name")

這個工具元件可以取得所有"物件Name"所有底下物件的Array

ex.

var paras = $A(document.getElementsByTagName('物件Name'));
paras.each(Element.hide);
$(paras.last()).show();

3.$F("物件id") = document.getElementById("物件id").value;

4.$H("名稱") 是一個hash

ex.

var h = $H({ version: 1.5, author: 'Sam Stephenson' });
h.each(function(pair) {
alert(pair.key + ' = "' + pair.value + '"');
});
這會出現二個alert視窗,第一個是version = 1.5 第二個是author = SamStephenson

二.ajax使用prototype

來個簡單的例子應該很容易就理解了

new Ajax.Request('response.jsp',{
method: 'get',
parameters: {'id':'456'},
onSuccess: function(transport) {
$("msg").update(transport.responseXML);
}});

說明

1.method 可以用post跟get二種

2.parameters可以傳入{'id':'456'}  ==>response.jsp?id=456

這裡可以利用json的方式傳入,但json.js會跟新版的prototype.js衝突

建議可以直接使用prototype的function來做{'id','456'.toJSON()}

或者

['a', {b: null}].toJSON();
//-> '["a", {"b": null}]'

利用toJSON可以防止脫溢符號的攻擊

3.onXXXXX可以參考api

onSuccess:function(transport)

當成功回應時要做什麼動作

transport有三個response是responseXML跟responseText,responseJSON (Server端記得要設定response的ContentType)

onFailure:function()

當Server出現Exception時會執行這個function

ps.responseText.evalJSON()可以轉換成json格式

三.$("物件id").update(內容)

ex

$("物件id").update(transport.responseText)

會更新"物件id"裡的內容

以上是比較常用的幾個function



Related Posts with Thumbnails

5 回應 to “Ajax 使用prototype.js 1”

PingBack List:

  1. [jsp小技巧]利用Throw Exception來完成Ajax | 聰明的生活2
  1. 1
    tsc

    請問parameters: {’id’:'456′},可不可以同時也放Form.serialize(form1),要自訂的參數也要form裡的欄位

    [回應]

    yku Replay:

    我不太看的懂你的意思le…

    [回應]

  2. 2
    tsc

    paramaters : 參數列,Form.serialize(form1)都要的話,怎麼寫?

    [回應]

    yku Replay:

    paramaters:Form.serialize(form1)
    應該就可以了
    如果你要更簡單的方式
    你可以把form都設計好.,…然後call
    $(’person-example’).request({
    onComplete: function(){ alert(’Form data saved!’) }
    })
    來實作ajax 記得form的onsubmit=”return false;”
    就可以用了…更簡單

    [回應]

留下您想說的話: