找回密码
 立即注册

QQ登录

只需一步,快速开始

guoqp

银牌会员

216

主题

819

帖子

2001

积分

银牌会员

积分
2001

时代开发者征文活动

guoqp
银牌会员   /  发表于:2022-11-2 15:40  /   查看:1187  /  回复:0
首先描述一下我的应用场景

活字格应用生成一个合同编号,返回给OA流程使用。活字格应用与OA服务器因为不在同一个服务器,存在跨域访问问题,导致OA系统客户端浏览器中无法GET我们生成的合同号。

到找了很多解决办法,发现最佳体验是使用JSONP,我在此就不解释什么叫JSONP以及跨域这些专业术语了,因为我也是个小白,就说怎么解决问题。

一、我们开发一个WEBAPI(帮助文件里有),我贴上我的示例代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GrapeCity.Forguncy.ServerApi;
using Microsoft.AspNetCore.Http;

namespace 设计院项目数据管理WEBAPI
{
    public class PMAPI:ForguncyApi
    {
        [Get]
        public async Task CreateContractNumber()
        {
            string callback = Context.Request.Query["callback"].ToString();
            string ContractNumber = "{\"ContractNumber\":\"晨光设(2022)-085号-01\"}";
            await this.Context.Response.WriteAsync(callback + "(" + ContractNumber + ")");
        }
    }
}


这是一个最简单的生成合同号的WEBAPI

二、将生成的API DLL文件上传到活字格设计器并发布到服务器
image.png454877623.png

三、在客户端页面中使用getJSON(也可以使用ajax将type设为jsonp),获取数据并处理。

<script>
   jQuery().ready(function() {
      $.getJSON(
        "http://10.20.16.9/zs/customapi/pmapi/createcontractnumber?callback=?",
        function(data)
         {
           console.log(data.ContractNumber);
                alert(data.ContractNumber);
         })
   });
</script>


上边红色部门为调用的WEBAPI,蓝色部分为处理的方法,data就是返回数据,比如上边我们返回的数据data.ContractNumber就是返回的合同号




这里顺带提下需求,真心希望活字格服务器命令返回命令能支持jsonp的返回,像这样的跨域需求真心太需要了。

评分

参与人数 2金币 +66 满意度 +5 收起 理由
HH3b43 + 5
Chelsey.Wang + 66 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部