物流系統中應用AJAX

來源:互聯網
上載者:User
       最近完成了一個B/S的物流管理系統,對於在其中使用的一些新技術做一個總結。此為上篇《利用XML實現通用WEB報表列印實際使用中的例子 》的繼續。
       為瞭解決伺服器端頁面重新整理引起的使用者不適和減少無需修改資料重新載入的延時,在單據查詢,資料儲存,資料修改等操作時採用了AJAX無重新整理技術,簡單介紹如下:

(一).aspx 頁面
包含頁面配置,調用隱藏表單執行操作返回XML並載入到本表單的javascript代碼:    //根據輸入單據號,查詢單據該單據資訊並在頁面上顯示
    function DisplayNoteInfo(ctlRowId,ctlNoteNo,ctlHidStockId,ctlHidMoveType,tableId){
                
        //發給幕後處理    
        //alert("hidGetNotesMaster.aspx?NoteNo=" + emNo.value + "&StockId=" + emStockId.value + "&MoveType=" + emTypeCode.value);                
        oHttpReq.open("POST", "frmhidInOutInform.aspx?globalNo="+ emNoteNo.value +"&stockId=" + emStockId.value + "&actionType=" + emTypeCode.value  , false);
        
        oHttpReq.send("");
        
        xmlResult = oHttpReq.responseText;
            
        oDoc.loadXML(xmlResult);
        
        var dataItems = new Array();        
        var detailItems = new Array();    
        
        dataItems[0] = oDoc.selectNodes("//InformMaster/CUSTOMER_NAME");

        //  

        detailItems[0] = oDoc.selectNodes("//InformDetail/BILL_NO");
        //             
        
        
        //主表
        if (dataItems[0].length==0 )    //客戶名稱為空白,表示查詢單據資料為空白
        {    
                            
            hasGet = false;

        }    
        else     //查詢單據到了資料
        {
            
            //客戶
            var emCustomAddr = document.getElementById('txtCustomName');
            if(dataItems[0].length > 0){
                emCustomAddr.value = dataItems[14][0].text;                            
            }
            else{
                emCustomAddr.value="";
            }            
                    
            hasGet = true;
            
        }
        
        
        //明細表        
        if (detailItems[0].length==0)//PROD_TYPE為空白
        {
            //hasGet = false;                
        }
        else{
            for(var i=0;i<=detailItems[0].length-1;i++){//逐個遍曆
            
                var newRowId;
            
                newRowId = NewRow(tableId);    //在表的最後新增一行
                newRowId = parseInt(newRowId);
                            
                eval("document.all.item(txtBoxCtl[j],newRowId-1).value=detailItems[j][i].text");                                
            }    
                        
            hasGet = true;                
        }    
        
        return hasGet;

    }

(二)隱藏表單在後頭工作,返回XML檔案            globalNo = Request.QueryString("globalNo")

            stockIdStr = Request.QueryString("stockId")

            Select Case actionType '根據出入庫類型選擇操作

                Case "XIAOSHOUCHUKU" '銷售出庫

                    Dim SaleOutAction As New OutSaleAction

                    '檢索銷售出庫主表
                    Ds = SaleOutAction.GetInformInfo(globalNo, stockIdStr, notFinished)

                    Dim writer As New System.Xml.XmlTextWriter(Response.OutputStream, New System.Text.UTF8Encoding)

                    writer.Formatting = System.Xml.Formatting.Indented
                    writer.Indentation = 4
                    writer.IndentChar = " "

                    Ds.WriteXml(writer)
                    writer.Flush()
                    writer.Close()

(三).要注意的問題
1.表單間通過post方法傳遞的參數值最大不能超過4K,否則javascript執行直接出錯。
2.我在項目中添加了三個隱藏表單,分別為:hidInform檢索單據資訊,hidAction儲存等操作,hidXml取得列印單據XML檔案。
3.對於隱藏表單的存取權限,必須是由系統指向的才有許可權,直接輸入url不允許訪問。

        If Request.UrlReferrer Is Nothing Then
            Response.Write("<script language='javascript'>alert( '非法的存取方法!');</script>")
            Response.Write("<script language='javascript'>parent.location.href='default.aspx';</script>")
            Exit Sub
        End If

好了,今天就寫到這兒。使用的技術很簡單,之所以寫出來,一是對給新入門的朋友提供一點協助,二是自己總結提高。歡迎討論。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.