加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【cocos2d-js网络教程篇】cocos2d-js http网络请求

发布时间:2020-12-14 16:56:18 所属栏目:百科 来源:网络整理
导读:前言 刚入手cocos2d-js,看到网上的JS的http网络请求,大部分都是错的。原因在于,js-tests里面的网络请求实例没有给出加载完成事件。正确的加载完成事件如下: var xhr = cc.loader.getXMLHttpRequest(); xhr.open("POST",url); xhr.setRequestHeader("Cont

前言

刚入手cocos2d-js,看到网上的JS的http网络请求,大部分都是错的。原因在于,js-tests里面的网络请求实例没有给出加载完成事件。正确的加载完成事件如下:

var xhr = cc.loader.getXMLHttpRequest();
        xhr.open("POST",url);
        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
        xhr["onloadend"] = function(){
};

Http.js完整类

var Http =  cc.Class.extend({
    m_inst : null,//实例
    url : "http://127.0.0.1:8080/request.php",ctor : function(){
    },/*
     * 网络请求之GET
     * url 请求的网络地址
     * callback 回调参数
     * */
    getWithUrl : function(url,callback){
        var xhr = cc.loader.getXMLHttpRequest();
        xhr.open("GET",url,true);
        xhr["onloadend"] = function () {
            if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status <= 207)) {
                err = false;
            }else{
                err = true;
            }
            var response = xhr.responseText;
            callback(err,response);
        };
        xhr.send();
    },/*
     * 网络请求之POST
     * url 请求的网络地址
     * params  请求参数  ("id=1&id=2&id=3")
     * callback 回调参数
    ['loadstart','abort','error','load','loadend','timeout']
    * */
    sendWithUrl : function(url,params,callback){

        var xhr = cc.loader.getXMLHttpRequest();
        xhr.open("POST","application/x-www-form-urlencoded;charset=UTF-8");
        xhr["onloadend"] = function(){

            var sc = -1
            if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status <= 207)) {
                sc = 0;
            }

            var json = JSON.parse(xhr.responseText)
            var rc = parseInt(json["code"])

            callback(sc,rc,json);

            if(sc == 0 && (rc != 0) && RETCODE[rc + ""])
            {
                Alert.getInst().show(RETCODE[rc + ""])
            }
            else if(sc != 0 || rc != 0 ){
                Alert.getInst().show("sc: " + sc + " rc: " + rc)
            }
        }
       xhr.send(params);
    }
});

//获取实例
Http.inst = function() {
    if (Http.m_inst == null) {
        Http.m_inst = new Http();
    }
    return Http.m_inst;
};

使用方法

Http.inst()->sendWithUrl("http://127.0.0.1:8080/request.php","id=1&id=2&id=3",function(sc,response){
  cc.log("返回数据" + response);
});
有什么不懂的问题或者需要php服务端的代码,请在下面留下你的联系方式。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读