我正在使用Typeular版本2.2.2的Angular4
当我使用过滤器调用JSON时,我的网络应用程序正常运行,但当我将过滤器值称为对象时,我的NativeScript应用程序失败,但当我将过滤器值称为字符串时工作正常。
错误响应状态:URL为200:null
如果过滤器值和搜索值是STRING,则它可以工作,而如果它们是如下对象,则不起作用
这不起作用
https://api.domainname.com/api/v1/searchevents?token=057001a78b8a7e5f38aaf8a682c05c414de4eb20&filter= { “极限”: “12”, “跳过”: “0”}&安培;搜索= { “搜索”: “”, “纬度”: “”, “经度”: “” “类别”: “”, “地址”: “”, “类型”: “即将举行的”}
我使用的代码在
之下getData(serverUrl,type,skip_limit){
pick B
squash D
pick C
pick E
上面为API形成的网址很好,工作正常。然而错误出现错误响应状态:URL为200:null
任何人都可以帮助我解决这个问题吗?
答案 0 :(得分:0)
看起来问题是"过滤器"值是不同类型的,从你提到的工作,你的服务期望一个字符串而不是一个对象/数组。因此,当它得到一个时,它无法发送正确的响应。使用URL中的对象,您可能必须重写服务以将其作为对象读取(解析这两个属性并单独获取它们)
为简单起见,您可以将这两个变量作为URL中的两个不同变量。如下,
https://api.domainName.in/api/v1/oauth/token?limit=10&skip=0
更准确地说明你的问题中发生了什么,
1)记录确切的URL并将其发布在问题中。没人能猜到"文字"在您的第一个网址中。
2)您提到的工作网址有"令牌"作为路径的一部分,但在代码中,它是一个变量,它将具有来自" token_value"的动态值。
3)发布您的服务代码。特别是签名和输入解析部分。
答案 1 :(得分:0)
得到了解决方案: 您所要做的就是使用Typescript encodeURI()
对Filter和Search Parameters进行编码,如果它是Object或Arrayvar filter =' {" limit":" 12"," skip":" 0"}&#39 ;
var search =' {"搜索":"","纬度":"",&#34 ;经度":"""分类":"""地址":"" "类型":"即将"}'
var encoded_filter = encodeURI(filter);
var encoded_search = encodeURI(search);
url = this.apiUrl + serverUrl +'?token =' + token_value +'& filter =' + encoded_filter +'& search =&# 39 + encoded_search