[問題] 讓網頁顯示錯誤訊息 (已解決)

看板C_Sharp (C#)作者 (archer)時間9年前 (2016/06/15 09:42), 9年前編輯推噓2(207)
留言9則, 5人參與, 最新討論串1/1
大家好~ 我是弱弱的兼職程設 (本職是系統管理,會兼職是因為遇缺不補,只好硬著頭皮跳下來做... Q_Q) 我遇到的問題是,無法把後端的錯誤訊息顯示到前端 (術語是這樣講嗎?) 要講清楚得先畫一下架構 一等一電子簽核系統(簡稱UOF,c# 寫的) -- SAP RFC(Remote Function Call) - DB RFC 是在 sap 中用 ABAP 撰寫 畫面是這樣 https://dl.dropboxusercontent.com/u/6828634/bpm_po_form.png
運用 UOF 系統做 收貨,流程如下: 1. 在 UOF 點選 [讀取採購單資料] 2. 呼叫 RFC ,到 DB 取得採購單相關資料 3. 回傳資料到前端 UOF 端的程式架構不太懂,應該是 master page 架構,元件是這樣子 1. UOF 內建的東西 (master page ?) 2. 客製程式 po_receipt_i,寫成使用者控制項 (有 .ascx 和 .ascx.cs) 我希望按下 [讀取採購單資料] 時,能夠顯示錯誤訊息在網頁上 (錯誤訊息:在 sap 內檢查採購單的各種狀況,並以 string 的方式透過 RFC 傳回) 現在的問題是,[訊息] 區塊埋的錯誤檢核,基本上是用 javascript 檢查 採購單號是否空白 採購單號是不是數字 這些都是在網頁 (前端) 就可以直接檢查 但我的需求必須先將資料從 網頁 取出,送到 sap 檢查,若有錯誤再回傳訊息到 網頁 我想作法應該是 在訊息區塊埋一段 c# 程式,按下 [讀取採購單資料] 時一併觸發,回傳資料也是用 c# 接 (現在還看不懂要埋在哪邊,不過這只能試看看了) Q 要怎麼用 javascript 去取得錯誤訊息.. = =a 應該會有人問為什麼不找廠商吧?因為態度太差所以翻臉了 (攤手) 然後上面也要不到預算找別人接手 其實這問題不是非解不可,只是身為IT看到會手癢 ... 0rz 古早以前曾經用 php + javascript 辦到類似的事情,所以作法的部份稍微有點頭緒 但我想直接問應該可以少繞很多路 (另一方面是現在沒太多時間可繞) 我已經做好會被罵的準備了 U_U 罵完還請給個方向或關鍵字讓我排除問題,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.20.129.1 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1465954925.A.199.html

06/15 10:00, , 1F
要改SAP RFC讓它回傳你要的資料,所以...
06/15 10:00, 1F
RFC 段已經處理好了 :) ※ 編輯: aeolus0829 (211.20.129.1), 06/15/2016 10:07:08

06/15 13:00, , 2F
直接把訊息放到label.text呢
06/15 13:00, 2F

06/15 15:35, , 3F
ajax?
06/15 15:35, 3F

06/15 15:36, , 4F
還是我誤會題意XD
06/15 15:36, 4F
你應該.. 沒誤會,但... 我只是問要怎麼丟參數和接訊息.. ajax 會搞死我 Q_Q 雖然我是有在 cs 檔開頭看到 jquery 3.0 啦... 0rz ※ 編輯: aeolus0829 (211.20.129.1), 06/15/2016 16:01:50

06/15 17:23, , 5F
你應該只是要把Server端的訊息放到轉出的html上吧?
06/15 17:23, 5F

06/15 17:23, , 6F
那應該是不需要javascript,就二樓那個就好
06/15 17:23, 6F

06/15 17:26, , 7F
WebForm的作法就是把string值設給控制項,自然就會呈現出來
06/15 17:26, 7F

06/15 17:32, , 8F
不用在UI(aspx、ascx)埋程式,只是原本沒控制項的話要加
06/15 17:32, 8F

06/16 10:56, , 9F
我試試
06/16 10:56, 9F
真的可以! 原先是因為 po_reciept_i 有部份程式是引用 axl,但我找不到 axl 的程式碼在哪 axl.SapCon.PO_Receipt_get get = new axl.SapCon.PO_Receipt_get(); 來回找了好幾次後,確定 PO_Receipt_get 是包在 axl.dll 裡, 所以看不懂為什麼 RFC 端明明有回傳訊息,但是網頁卻沒有顯示 後來用 ILSpy 反組譯 axl.dll 才發現... axl.dll 裡根本沒有寫接收訊息的機制 (補個幹) 我把 axl.dll 看到的 class 及程式碼內容直接寫在 po_reciept_i.cs 裡面 然後補上訊息接收機制 this.ZMSG = logon.Retrun_String("ZMSG"); this.ZFLAG = logon.Retrun_String("ZFLAG"); 再照二樓提醒的方式,直接把 RFC 回傳的訊息丟給 label 就可以了 string ZMSG = get.ZMSG; string ZFLAG = get.ZFLAG; if (ZFLAG == "E") warring.Text = ZMSG; 太開心了~ 這樣對 UOF 的架構又多了一些了解,以後能做的事就更多了 (但是我不能亂講) > <" ※ 編輯: aeolus0829 (211.20.129.1), 06/16/2016 14:30:31
文章代碼(AID): #1NOB9j6P (C_Sharp)
文章代碼(AID): #1NOB9j6P (C_Sharp)