记录一段Js:用url取值

本文介绍了解析URL中参数的三种方法,包括使用正则表达式、JavaScript函数和自定义函数来获取特定参数值,适用于解决参数取值为乱码的问题。
 function request(paramName) {
    var paramValue = "";
    var params = window.location.href.split('?')[1];
    if (params == null || params == "")
        return paramValue;
    var arr = params.split('&');
    if (arr.length >= 1) {
        for (var i = 0; i < arr.length; i++) {
            var name = arr[i].substring(0, arr[i].indexOf("="));
            if (name == paramName) {
                var begin = arr[i].indexOf("=");
                var end = arr[i].length;
                paramValue = removeHTMLTag(arr[i].substring(begin + 1, end));
                break;
            }
        }
    }
    return paramValue;
}

当url上的参数取下来是乱码的情况:

	getQueryString:function(name){
		var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
		var r = window.location.search.substr(1).match(reg);
		if (r != null) return decodeURI(r[2]); return null;
	},
 getUrlParam(location, name) {
    var str, parastr
    var array = []
    str = location
    if (str.split('?')[1] != undefined && str.split('=')[1] != undefined) {
      parastr = str.split('?')[1]
      parastr = decodeURIComponent(parastr)
      var arr = []
      arr = parastr.split('&')
      for (var i = 0; i < arr.length; i++) {
        array[arr[i].split('=')[0]] = arr[i].split('=')[1]
      }
    }
    return array[name]
  },
<think>嗯,用户的问题集中在两个关键点:DICOMweb的WADO请求中requestType参数的可取值,以及如何解决getImageSrcFromImageId.js中出现的"Noimageloaderfoundforscheme'https'"错误。从用户补充的引用来看,ta正在使用cornerstoneWADOImageLoader库进行DICOM影像加载的开发工作。关于requestType参数,根据DICOM标准PS3.18和实际实现,主要有三个值:1.WADO-这是最基础的URI模式请求,通过URL参数直接获取单个DICOM对象,适合简单的单实例下载场景。用户引用的第三个示例中获取JPEG渲染的请求就是这种模式[^3]。2.WADO-RS-这是基于RESTful架构的现代实现,支持批量操作和资源路径表示法。用户给出的元数据请求示例就是典型的WADO-RS用法[^3]。3.WADO-WS-这个已被废弃的SOAP协议实现现在几乎不用了,但考虑到完整性还是应该提及。用户遇到的"httpsscheme"错误很典型,这通常发生在使用cornerstone库时忘记注册加载器。从ta引用的第二段内容看[^2],解决方案很明确:-必须显式调用registerImageLoader方法注册加载器-需要根据开发环境选择正确的引入方式(尤其注意生产环境要用bundle.min版本)-如果使用WebWorkers还需要额外配置特别注意到用户在第一次提问时已经给出过loadImage()的自定义实现示例[^1],这说明ta可能尝试过直接使用XMLHttpRequest但未成功。这种情况下,更推荐使用官方库的注册方案而非重写loader,因为官方库已经处理了DICOM解析、字节序转换等复杂逻辑。考虑到用户明显在进行web端的DICOM开发,应该在解决方案中强调几个实践要点:1.跨域问题需要服务器配置CORS2.对于HTTPS协议必须确保证书有效3.WADO-RS请求的URL路径格式与WADO-URI完全不同最后生成的三个延伸问题都很有针对性,特别是第二个关于批量下载的问题,结合用户提到的getImageSrcFromImageId.js这个文件名来看,ta很可能正在处理多影像加载场景。可以预判ta接下来的问题会聚焦在性能优化上。</think> 关于 DICOMweb WADO `requestType` 参数的值及 `No image loader found for scheme 'https'` 错误的解决方案如下: --- ### 一、DICOMweb WADO `requestType` 参数的可取值 根据 DICOM 标准(PS3.18),`requestType` 参数支持以下值: 1. **`WADO`** - **用途**:通过 URL 参数获取单个 DICOM 对象(实例/系列/研究)。 - **特点**: - 通过查询字符串传参(如 `?studyUID=xxx&seriesUID=xxx`)。 - 直接返回二进制 DICOM 文件(`application/dicom`)。 - **示例**: ```http https://server/wado?requestType=WADO&studyUID=1.2.3...&contentType=application/dicom ``` 2. **`WADO-RS`** - **用途**:基于 RESTful 架构访问 DICOM 资源(批量操作、元数据查询)。 - **特点**: - 使用资源路径代替 URL 参数(如 `/studies/{studyUID}/series`)。 - 支持返回 JSON/XML 元数据(`application/dicom+json`)或渲染图像(`image/jpeg`)。 - **示例**(引用您提供的请求[^3]): ```http GET /studies/1.2.3.../instances/1.2.4.../rendered HTTP/1.1 Accept: image/jpeg ``` 3. **`WADO-WS`**(**已弃用**) - 基于 SOAP 协议的旧标准,现代 DICOMweb 服务已不再支持。 --- ### 二、解决 `No image loader found for scheme 'https'` 错误 此错误表明 **Cornerstone 未注册 HTTPS 协议的加载器**,解决方案如下: #### 步骤 1:检查加载器注册 确保在代码中显式注册 `wadors`(WADO-RS)或 `dicomweb` 协议加载器: ```javascript import cornerstone from 'cornerstone-core'; import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'; // 注册 WADO-RS 协议加载器(支持 HTTPS) cornerstoneWADOImageLoader.external.cornerstone = cornerstone; cornerstoneWADOImageLoader.webWorkerManager.initialize({ maxWebWorkers: navigator.hardwareConcurrency || 1 }); // ⭐关键:注册 'wadors' 协议(对应 WADO-RS 服务) cornerstone.registerImageLoader('wadors', cornerstoneWADOImageLoader.loadImage); ``` #### 步骤 2:验证 ImageID 格式 确保 `imageId` 使用正确的协议前缀: - WADO-RS 服务:以 `wadors:` 开头 ```javascript const imageId = 'wadors:https://dicomweb.example.com/studies/1.2.3...'; ``` #### 步骤 3:检查依赖引入 确认加载器库正确引入(引用您提供的安装方式[^2]): ```javascript // 生产环境使用最小化 Bundle import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader/dist/cornerstoneWADOImageLoaderNoWebWorkers.bundle.min'; ``` --- ### 三、为何需要 `wadors` 协议标识? 1. Cornerstone 通过协议前缀(如 `wadors:`)匹配注册的加载器逻辑。 2. `http`/`https` 是通用协议,需明确关联到 DICOM 解析器(WADOImageLoader)。 ```mermaid graph LR ImageID("wadors:https://...") -->|注册加载器| Loader[WADOImageLoader] Loader -->|XHR请求 + DICOM解析| ImageViewport ``` --- ### 四、完整请求流程示例 ```javascript // 1. 注册加载器 cornerstone.registerImageLoader('wadors', cornerstoneWADOImageLoader.loadImage); // 2. 构造 ImageID(WADO-RS 实例) const imageId = 'wadors:https://server/wado?requestType=WADO&studyUID=1.2.3...'; // 3. 加载并显示影像 cornerstone.loadImage(imageId).then(image => { cornerstone.display(element, image); }); ``` > ⚠️ **注意**:如果服务端不支持 CORS,需配置代理或服务器端转发。 --- ### 五、相关延伸问题
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值