不同步處理(Asynchronous processing)有很多好處,然而在發展程式階段時常有意想不到的狀況,剛開始接觸ajax的我,只知道Google和Facebook等優質網站的服務有用到這招,吸引非常多人使用它們的服務,現在有機會碰網路程式語言,當然要一探究竟此技術的內涵!
在這裡就先紀錄可立即看到的頁面和程式運作的過程,來瞭解表面和內部的差異,進而思考如何解決不同步處理所產生的問題。
在server.php加入:
$json = $jstree->{$_REQUEST["operation"]}($_REQUEST);
echo $json;
$fp = fopen('undefined.txt', 'a+');
fwrite($fp, print_r($_REQUEST, true));
fwrite($fp, $json);
fclose($fp);
isTree v.1.0 – Demo.html顯示:
undefined.txt新加入的內容:
Array
(
[operation] => create_node
[id] => 5
[position] => 0
[title] => aa
[type] => folder
)
{ "status" : 1, "id" : 23 }Array
(
[operation] => create_node
[id] => 23
[position] => 0
[title] => Dashboard
[type] => default
)
{ "status" : 1, "id" : 24 }Array
(
[operation] => create_node
[id] => 23
[position] => 1
[title] => Assets
[type] => default
)
{ "status" : 1, "id" : 25 }Array
(
[operation] => create_node
[id] => 23
[position] => 2
[title] => Sequences
[type] => default
)
{ "status" : 1, "id" : 26 }Array
(
[operation] => create_node
[id] => 23
[position] => 4
[title] => Shots with Cannon
[type] => default
)
{ "status" : 1, "id" : 27 }Array
(
[operation] => create_node
[id] => 23
[position] => 5
[title] => Notes
[type] => folder
)
{ "status" : 1, "id" : 28 }Array
(
[operation] => create_node
[id] => 23
[position] => 6
[title] => Schedule
[type] => folder
)
{ "status" : 1, "id" : 29 }Array
(
[operation] => create_node
[id] => 23
[position] => 3
[title] => Shots
[type] => default
)
{ "status" : 1, "id" : 30 }Array
(
[operation] => create_node
[id] => 23
[position] => 7
[title] => Versions and Playlists
[type] => folder
)
{ "status" : 1, "id" : 31 }Array
(
[operation] => create_node
[id] => 28
[position] => 0
[title] => All Notes
[type] => default
)
{ "status" : 1, "id" : 32 }Array
(
[operation] => create_node
[id] => 29
[position] => 0
[title] => All Tasks
[type] => default
)
{ "status" : 1, "id" : 33 }Array
(
[operation] => create_node
[id] => 29
[position] => 1
[title] => All Tasks by Assigned
[type] => default
)
{ "status" : 1, "id" : 35 }Array
(
[operation] => create_node
[id] => 29
[position] => 2
[title] => All Tasks by Link
[type] => default
)
{ "status" : 1, "id" : 34 }Array
(
[operation] => create_node
[id] => 31
[position] => 0
[title] => All Playlists
[type] => default
)
{ "status" : 1, "id" : 36 }Array
(
[operation] => create_node
[id] => 31
[position] => 1
[title] => All Versions
[type] => default
)
{ "status" : 1, "id" : 37 }
可見我加入aa這個專案之後,在Demo顯示為正確順序,然而在txt裡的資料卻呈現不正確順序資料! Sequences->Shots->Shots with Cannon,Shots變成到後頭才處理。 註:[id]表示父節點id,"id"代表當前節點的id。 [operation]:節點操作、[position]:兄弟節點位置、[tilte]:節點名稱、[type]:節點型態。

隨意留個言吧:)~