当第三方接入 第三方接口调度了wx.request的时候. 请注意 一定要添加域名白名单;
在调试中;不需要任何白名单即可调试成功;
-----------------------------------------------------------老板的刀块摁不住了.. T.T!!!!
- 需求的场景描述(希望解决的问题)
小程序 因为没有业务接口可以直接获取定位地址的.都要选填.我们要实现自动定位的功能.
也就是一进主页就可以完成自动定位.也就实现这个效果. 以下为配图 但是在测试中出现问题了
在测试中. 我们小程序上传了体验版 在正常访问的时候 好像调不出来. 授权之后.. 就再也没了反应..
如果开启了调试模式 又一切正常.. 关闭调试模式又调不到方法;...
场景如下:
打开调试.正常访问..一切正常....
关闭调试.
仿佛调不到接口似得... 我这都不知道出了什么问题..调试都调不出来..
在此. 把地图反馈那个接口反馈放上来. 该地图接口为腾讯地图.;
我担心如果上传上去正式 地图调不起来.我本地测试没问题; 在体验版打开小程序调试
/** * 微信小程序JavaScriptSDK * * @version 1.0 * @date 2017-01-10 * @author jaysonzhou@tencent.com */ var ERROR_CONF = { KEY_ERR: 311, KEY_ERR_MSG: 'key格式错误' , PARAM_ERR: 310, PARAM_ERR_MSG: '请求参数信息有误' , SYSTEM_ERR: 600, SYSTEM_ERR_MSG: '系统错误' , WX_ERR_CODE: 1000, WX_OK_CODE: 200 }; var BASE_URL = 'https://apis.map.qq.com/ws/' ; var URL_SEARCH = BASE_URL + 'place/v1/search' ; var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion' ; var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/' ; var URL_CITY_LIST = BASE_URL + 'district/v1/list' ; var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren' ; var URL_DISTANCE = BASE_URL + 'distance/v1/' ; var Utils = { /** * 得到终点query字符串 * @param {Array|String} 检索数据 */ location2query(data) { if ( typeof data == 'string' ) { return data; } var query = '' ; for ( var i = 0; i < data.length; i++) { var d = data[i]; if (!!query) { query += ';' ; } if (d.location) { query = query + d.location.lat + ',' + d.location.lng; } if (d.latitude && d.longitude) { query = query + d.latitude + ',' + d.longitude; } } return query; }, /** * 使用微信接口进行定位 */ getWXLocation(success, fail, complete) { wx.getLocation({ type: 'gcj02' , success: success, fail: fail, complete: complete }); }, /** * 获取location参数 */ getLocationParam(location) { if ( typeof location == 'string' ) { var locationArr = location.split( ',' ); if (locationArr.length === 2) { location = { latitude: location.split( ',' )[0], longitude: location.split( ',' )[1] }; } else { location = {}; } } return location; }, /** * 回调函数默认处理 */ polyfillParam(param) { param.success = param.success || function () { }; param.fail = param.fail || function () { }; param.complete = param.complete || function () { }; }, /** * 验证param对应的key值是否为空 * * @param {Object} param 接口参数 * @param {String} key 对应参数的key */ checkParamKeyEmpty(param, key) { if (!param[key]) { var errconf = this .buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key + '参数格式有误' ); param.fail(errconf); param.complete(errconf); return true ; } return false ; }, /** * 验证参数中是否存在检索词keyword * * @param {Object} param 接口参数 */ checkKeyword(param){ return ! this .checkParamKeyEmpty(param, 'keyword' ); }, /** * 验证location值 * * @param {Object} param 接口参数 */ checkLocation(param) { var location = this .getLocationParam(param.location); if (!location || !location.latitude || !location.longitude) { var errconf = this .buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误' ) param.fail(errconf); param.complete(errconf); return false ; } return true ; }, /** * 构造错误数据结构 * @param {Number} errCode 错误码 * @param {Number} errMsg 错误描述 */ buildErrorConfig(errCode, errMsg) { return { status: errCode, message: errMsg }; }, /** * 构造微信请求参数,公共属性处理 * * @param {Object} param 接口参数 * @param {Object} param 配置项 */ buildWxRequestConfig(param, options) { var that = this ; options.header = { "content-type" : "application/json" }; options.method = 'GET' ; options.success = function (res) { var data = res.data; if (data.status === 0) { param.success(data); } else { param.fail(data); } }; options.fail = function (res) { res.statusCode = ERROR_CONF.WX_ERR_CODE; param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, result.errMsg)); }; options.complete = function (res) { var statusCode = +res.statusCode; switch (statusCode) { case ERROR_CONF.WX_ERR_CODE: { param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); break ; } case ERROR_CONF.WX_OK_CODE: { var data = res.data; if (data.status === 0) { param.complete(data); } else { param.complete(that.buildErrorConfig(data.status, data.message)); } break ; } default :{ param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)); } } } return options; }, /** * 处理用户参数是否传入坐标进行不同的处理 */ locationProcess(param, locationsuccess, locationfail, locationcomplete) { var that = this ; locationfail = locationfail || function (res) { res.statusCode = ERROR_CONF.WX_ERR_CODE; param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); }; locationcomplete = locationcomplete || function (res) { if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); } }; if (!param.location) { that.getWXLocation(locationsuccess, locationfail, locationcomplete); } else if (that.checkLocation(param)) { var location = Utils.getLocationParam(param.location); locationsuccess(location); } } } class QQMapWX { /** * 构造函数 * * @param {Object} options 接口参数,key 为必选参数 */ constructor(options) { if (!options.key) { throw Error( 'key值不能为空' ); } this .key = options.key; } /** * POI周边检索 * * @param {Object} options 接口参数对象 * * 参数对象结构可以参考 * @see http://lbs.qq.com/webservice_v1/guide-search.html */ search(options) { var that = this ; options = options || {}; Utils.polyfillParam(options); if (!Utils.checkKeyword(options)) { return ; } var requestParam = { keyword: options.keyword, orderby: options.orderby || '_distance' , page_size: options.page_size || 10, page_index: options.page_index || 1, output: 'json' , key: that.key }; if (options.address_format) { requestParam.address_format = options.address_format; } if (options.filter) { requestParam.filter = options.filter; } var distance = options.distance || "1000" ; var auto_extend = options.auto_extend || 1; var locationsuccess = function (result) { requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")" ; wx.request(Utils.buildWxRequestConfig(options, { url: URL_SEARCH, data: requestParam })); } Utils.locationProcess(options, locationsuccess); } /** * sug模糊检索 * * @param {Object} options 接口参数对象 * * 参数对象结构可以参考 * http://lbs.qq.com/webservice_v1/guide-suggestion.html */ getSuggestion(options) { var that = this ; options = options || {}; Utils.polyfillParam(options); if (!Utils.checkKeyword(options)) { return ; } var requestParam = { keyword: options.keyword, region: options.region || '全国' , region_fix: options.region_fix || 0, policy: options.policy || 0, output: 'json' , key: that.key }; wx.request(Utils.buildWxRequestConfig(options, { url: URL_SUGGESTION, data: requestParam })); } /** * 逆地址解析 * * @param {Object} options 接口参数对象 * * 请求参数结构可以参考 * http://lbs.qq.com/webservice_v1/guide-gcoder.html */ reverseGeocoder(options) { var that = this ; options = options || {}; Utils.polyfillParam(options); var requestParam = { coord_type: options.coord_type || 5, get_poi: options.get_poi || 0, output: 'json' , key: that.key }; if (options.poi_options) { requestParam.poi_options = options.poi_options } var locationsuccess = function (result) { requestParam.location = result.latitude + ',' + result.longitude; wx.request(Utils.buildWxRequestConfig(options, { url: URL_GET_GEOCODER, data: requestParam })); }; Utils.locationProcess(options, locationsuccess); } /** * 地址解析 * * @param {Object} options 接口参数对象 * * 请求参数结构可以参考 * http://lbs.qq.com/webservice_v1/guide-geocoder.html */ geocoder(options) { var that = this ; options = options || {}; Utils.polyfillParam(options); if (Utils.checkParamKeyEmpty(options, 'address' )) { return ; } var requestParam = { address: options.address, output: 'json' , key: that.key }; wx.request(Utils.buildWxRequestConfig(options, { url: URL_GET_GEOCODER, data: requestParam })); } /** * 获取城市列表 * * @param {Object} options 接口参数对象 * * 请求参数结构可以参考 * http://lbs.qq.com/webservice_v1/guide-region.html */ getCityList(options) { var that = this ; options = options || {}; Utils.polyfillParam(options); var requestParam = { output: 'json' , key: that.key }; wx.request(Utils.buildWxRequestConfig(options, { url: URL_CITY_LIST, data: requestParam })); } /** * 获取对应城市ID的区县列表 * * @param {Object} options 接口参数对象 * * 请求参数结构可以参考 * http://lbs.qq.com/webservice_v1/guide-region.html */ getDistrictByCityId(options) { var that = this ; options = options || {}; Utils.polyfillParam(options); if (Utils.checkParamKeyEmpty(options, 'id' )) { return ; } var requestParam = { id: options.id || '' , output: 'json' , key: that.key }; wx.request(Utils.buildWxRequestConfig(options, { url: URL_AREA_LIST, data: requestParam })); } /** * 用于单起点到多终点的路线距离(非直线距离)计算: * 支持两种距离计算方式:步行和驾车。 * 起点到终点最大限制直线距离10公里。 * * @param {Object} options 接口参数对象 * * 请求参数结构可以参考 * http://lbs.qq.com/webservice_v1/guide-distance.html */ calculateDistance(options) { var that = this ; options = options || {}; Utils.polyfillParam(options); if (Utils.checkParamKeyEmpty(options, 'to' )) { return ; } var requestParam = { mode: options.mode || 'walking' , to: Utils.location2query(options.to), output: 'json' , key: that.key }; var locationsuccess = function (result) { requestParam.from = result.latitude + ',' + result.longitude; wx.request(Utils.buildWxRequestConfig(options, { url: URL_DISTANCE, data: requestParam })); } if (options.from) { options.location = options.from; } Utils.locationProcess(options, locationsuccess); } } module.exports = QQMapWX; |
- 希望提供的能力
出现这情况 .不知道怎么解决了!
域名!!!!!!开启调试默认不检测域名啊 !!!!!
1、效果
不明白他为啥直接返回 php 文件里面的代码?? 而不是返回 php 返回的 json 数据呢? 还望大神赐教,我是后端小白
2、php文件
我不知啊,我是前端小白
说明你没起php的服务器 只起了一个静态资源服务器(类似于nginx这样的东西) php文件没送到解析器做解析 直接当成静态资源往外丢了
可是我已经在服务器下载了 php 程序,怎么怎能让服务器遇到 .php 结尾的文件当做 php 来解析呢?有没有比较详细的文档、教程呀? 因为我服务器才接触几天,毕竟才大学生
好好看一遍php环境配置教程吧……只言片语我很难教你
夺刀反杀
服务器域名,业务域名添加了吗
https://apis.map.qq.com
你这个域名配置到合法域名中了吗?
高德地图的API中使用的域名就需要配置到合法域名中,腾讯地图应该也是一样需要的。
把这个配置一下应该就可以了
你好,麻烦检查下你的相关域名是否已经配置好了
大哥 是不是地图白名单要加地址?
首先问下,你加了白名单的吧
白名单?
大哥 是不是地图白名单要加地址?
你wx.request 的地址都要加
求各位老大帮助. 老板的刀我摁不住了
试着放手
这明显请求没加白名单啊,所以真机上只有打开调试才能正常请求。