刚入手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服务端的代码,请在下面留下你的联系方式。 总结
以上是内存溢出为你收集整理的【cocos2d-js网络教程篇】cocos2d-js http网络请求全部内容,希望文章能够帮你解决【cocos2d-js网络教程篇】cocos2d-js http网络请求所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)