WebSocket及ajax跨域问题demo

工作中遇到的由js调取本地某C+而写的插件,解决跨域问题获取该插件从usb接口中获取的数据,记录文本,后续补充

   webSocket调用方式(首先支持跨域要插件支持webSocket)
   try {
            var postData = JSON.stringify({
                "test": "one",
                "items": [
                    {
                        "code": "000801000000000000051822",
                        "assetName": "O测试",
                        "assetSKUName1": "oneTestName",
                        "assetSKUName2": "twoTestName",
                        "vendor": "广州XXXX有限公司"
                    }
                ]
            });
            if ('WebSocket' in window) {
                wsreport = new WebSocket("ws://127.0.0.1:8083/print");
            } else if ('MozWebSocket' in window) {
                wsreport = new MozWebSocket("ws://127.0.0.1:8083/print");
            } else {
                //readport_websocket = new SockJS(readport_websocket_url);
                alert("谷歌和火狐浏以外的浏览器暂时不支持!")
            }
            wsreport.onopen = function () {
                /** //请求参数 */
                var param = postData;
                /** // 使用 send() 方法发送数据 */
                wsreport.send(param);
            };

            /** //接收到服务端响应的数据时,触发事件 */
            wsreport.onmessage = function (evt) {
                var data = evt.data;
                console.log("收到数据..." + data);
            }
            wsreport.onclose = function () {
                console.log("连接已关闭...");
            };
            wsreport.onerror = function (evt) {
                console.error("端口通信失败!", evt);
                alert("打印机连接端口通信失败")
            };

        } catch (e) {
            console.error("连接端口服务异常:", e)
            alert("打印机连接端口通信失败")
        }


        //调用ajax方式调取插件避免跨域问题

         $.ajax({
            url: "http://localhost:8083/print",
            data: JSON.stringify({
                "test": "two",
                "items": [
                    {
                        "code": "000801000000000000051822",
                        "assetName": "O测试",
                        "assetSKUName1": "TwoSkuName",
                        "assetSKUName2": "TwoSkuName2",
                        "vendor": "广州XXXXXX有限公司"
                    }
                ]
            }),
            dataType: "json",
            type: "POST",
            crossDomain: true,
            async: false,
            cache: false,
            timeout: 2000,
            success: function (rs) {
                console.log(JSON.stringify(rs));
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                if (XMLHttpRequest.status ==200 || XMLHttpRequest.statusText.indexOf("OK") == 0) {
                    console.log("打印连接成功");
                }else if( XMLHttpRequest.status == 404 || XMLHttpRequest.statusText.indexOf("NetworkError") == 0){
                    alert("打印失败:请检查“打印客户端”是否配置运行正常。");
                }else {
                    alert("打印标签失败:" + XMLHttpRequest.statusText);
                }
            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值