前言

刚入手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", url);
xhr.setRequestHeader("Content-Type","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, rc, response){
cc.log("返回数据" + response);
});

最新文章

  1. 安装.Net Framework3.5
  2. js填写银行卡号,每隔4位数字加一个空格
  3. iOS NSString中字符串的删除,替换
  4. UML状态图(转载)
  5. SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-011-注入AspectJ Aspect
  6. mybatis简单应用(基于配置文件)
  7. CocoaPods的安装及安装出现问题的处理
  8. 基于visual Studio2013解决C语言竞赛题之1051数的顺序
  9. 【十八】php文件下载源码
  10. HDU 2682 Tree
  11. 买帽子 (hash)
  12. Ball HDU - 4811
  13. PyCharm 项目删除
  14. K-means算法性能评估及其优化
  15. JavaScript的函数声明与函数表达式的区别
  16. 安卓自动化测试,贺晓聪之uiautomator设备和选择器~Python详解
  17. javascript 模拟java 实现继承的5种方式
  18. VS中的调试相关的技巧
  19. 架构模式数据源模式之:数据映射器(Data Mapper)
  20. CAC的Debian-8-64bit安装BBR正确打开方式

热门文章

  1. DOM用TagName操作标签
  2. git代码冲突
  3. MongoDB入门(7)- SpringDataMongoDB
  4. Eclipse 调试
  5. 【设计模式】 模式PK:代理模式VS装饰模式
  6. [Luogu 1168] 中位数
  7. 【洛谷 P3899】 [湖南集训]谈笑风生 (主席树)
  8. JVM在遇到OOM(OutOfMemoryError)时生成Dump文件
  9. perl中的默认变量与Z/map介绍
  10. PHP序列化、反序列化常用的魔术方法