weex stream 之fetch的get、post获取Json数据

无论何种平台,网络数据的获取都是十分重要的,最近学习weex,不可避免的要学习weex的数据请求方法了。网址

个人感觉,weex stream相较于其他平台,还算比较简单了,但是由于文档以及官方代码中的错误,导致网络请求很难获取到自己想要的数据,再次简单记录一下遇到的坑。



一、获取modal,stream,config对象

var modal = weex.requireModule(‘modal‘);
var stream = weex.requireModule(‘stream‘);
var config = require(‘./config.js‘)

二、get请求

get请求还好,按照官方的demo写就没什么问题了。

clickTypeGet:function(){
                                var me = this;

                stream.fetch({
                    method: ‘GET‘,
                    type: ‘json‘,
                    url: ‘https://api.github.com/repos/alibaba/weex‘
                }, function(ret) {
                    if(!ret.ok){
                        me.getResult = "request failed";
                        modal.toast({
                            ‘message‘: "失败",
                            ‘duration‘: 2.0
                        })
                    }else{
                        console.log(‘get---------:‘+JSON.stringify(ret));
                        me.getResult = JSON.stringify(ret);

                        modal.toast({
                            message: JSON.stringify(ret),
                            duration: 2.0
                        })
                    }
                })
            },

三、post请求

clickTypePost:function(){
                var me = this;
                stream.fetch({
                    method:"POST",
                    type:‘json‘,
                    url:‘http://www.kuaidi100.com/query‘,
                    headers:{‘Content-Type‘:‘application/x-www-form-urlencoded‘},
//                    body:‘type=shentong&postid=3333557693903‘,
                    body:config.toParams(
                            {
                                type:‘shentong‘,
                                postid:‘3333557693903‘,
                            })
//
//                    body:JSON.stringify({
//
//                        type:‘shentong‘,
//                        postid:‘3333557693903‘,
//                    }),

                }, function(ret) {
                    if(!ret.ok){
                        me.getResult = "request failed";
                        modal.toast({
                            ‘message‘: "失败",
                            ‘duration‘: 2.0
                        })
                    }else{
                        console.log(‘get---------:‘+JSON.stringify(ret.data));
                        me.getResult = JSON.stringify(ret);

                        modal.toast({
                            message: JSON.stringify(ret.data),
                            duration: 2.0
                        })
                    }
                },function(progress) {
//                    JSON.stringify(progress.length);
                })
            }
这里的body不能像官方一样写,官方是这么写的:事实证明,这么写,始终获取不到数据,也会提示数据请求成功,但是想要的数据却始终没有
                    body:JSON.stringify({
                        type:‘shentong‘,
                        postid:‘3333557693903‘,
                    }),

经过几番乱试,终于发现,只是因为body写法不对,造成的post请求获取不到数据,我们是这么写的

body:config.toParams(
                            {
                                type:‘shentong‘,
                                postid:‘3333557693903‘,
                            })

其中的toParams是自己写的一个工具方法:

toParams(obj) {
        var param = ""
        for(const name in obj) {
            if(typeof obj[name] != ‘function‘) {
                param += "&" + name + "=" + encodeURI(obj[name])
            }
        }
        return param.substring(1)
    },

小结:其实body字符串的格式是‘param1=p1&param2=p2’。


注意:fetch请求在电脑端浏览器会被提醒跨域,请求被拦截,直接用手机测试
时间: 2024-09-30 18:35:49

weex stream 之fetch的get、post获取Json数据的相关文章

jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表

对于问题从后台获取json数据,将内容填充到下拉列表,代码非常简单,具体过程请看下面代码. 需求:url:链接     par:ID       sel:下拉列表选择器 function BuildSelectBox(url, par, sel) {  $(sel).empty();  $.getJSON(url, { id: par }, function (json, textStatus) {   for (var i = json.length - 1; i >= 0; i--) {  

Ajax 跨域请求 jsonp获取json数据

遇到Ajax的跨域请求出问题 找了中解决办法如下: 参考内容:http://justcoding.iteye.com/blog/1366102 由于受到浏览器的限制,该方法不允许跨域通信.如果尝试从不同的域请求数据,会出现安全错误.如果能控制数 据驻留的远程服务器并且每个请求都前往同一域,就可以避免这些安全错误.但是,如果仅停留在自己的服务器上,Web 应用程序还有什么用处呢?如果需要从多个第三方服务器收集数据时,又该怎么办? 理解同源策略 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的

android通过httpClient请求获取JSON数据并且解析

android通过httpClient请求获取JSON数据并且解析:http://www.cnblogs.com/gzggyy/archive/2013/05/08/3066288.html Android--使用Http向服务器发送请求并取得返回结果,下载图片:http://www.2cto.com/kf/201307/229489.html Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据):http://blog.csdn.net/he

获取Json数据

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="JsonSendWay.aspx.cs" Inherits="JsonSendWay" %> <% =GetJsonData()%> //代码 using System;using System.Collections.Generic;using System.Linq;using Syste

pyhton 从web获取json数据 保存到本地然后再读取

从web中获取json数据直接进行处理总认为太慢.主要是从web中获取获取数据的过程有点慢. 所以就在想 假设先利用空暇时间把json数据获取并保存到本地,然后再从本地文件里读取和操作.应该就要快非常多. 这中间的主要问题就是格式的转换问题:1.将获取取的json数据序列化后保存到本地文件里:2.从文件里逐行读取数据,再将其反序列化为json格式. 详细的一个演示样例程序例如以下: [为保护个人信息,程序中的一些代码不完整] from urllib.request import urlopen;

mustache 获取json数据内数组对象指定元素的方法

由于最近项目再用mustache,因此发现了这个问题,mustache无法获取json数据内数组键值的指定索引的元素 遂上网查资料总结一下两种方法 1,数据为数组对像 var obj = [{name: 'foo'}, {name: 'bar'}]; var tmp = '{{#1}}{{name}}{{/1}}'; console.log(Mustache.render(tmp, obj)); //bar 这种方法个人觉得有一定局限性 -----参照:http://stackoverflow.

获取json数据中所有key集合

/** * 获取json数据中所有key */ function fetchResponseInfo(responseInfo){ //判断是否为空 if((!responseInfo || responseInfo.length <= 0)) { return; } //获取model var jsonCon = jQuery.parseJSON(responseInfo).model; if(!jsonCon){ return; } //获取所有key var keyArr; if(json

jquery通过ajax方法获取json数据不执行success回调

问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准写法,导致总是执行error回调方法 解决方案:使json格式务必符合下述3个标准写法:      1)键名称:用双引号括起:    2)字符串:用双引号括起:    3)数字,布尔值不需要使用双引号括起 : 注意:一定是双括号!

jQuery获取json数据实现代码

jQuery获取json数据实现代码:使用jQuery操作json数据是非常的频繁的,下面提供两端代码供大家参考之用,大家可以自行分析,以便灵活应用. /栏目 //发送ajax请求 $.getJSON( "../../../Templet/GetInfoHandler.ashx", //产生JSON数据的服务端页面 {id: "0", sid: "1;2;3", rid: Math.round(Math.random() * 10) }, //向

Json文件 使用rapidjson获取Json数据

在游戏中使用Json来储存数据用作配置文件,既方便读取,有方便管理. 这里可以选择导出两种格式: 1.属性方式 [{"name":"cl","age":27,"sex":"M"}, {"name":"cbsss","age":25,"sex":"W"}, {"name":"gx&