1,get请求
var xhr = cc.loader.getXMLHttpRequest();
var statusGetLabel = new cc.LabelTTF("Status:", "Thonburi", 18);
- this.addChild(statusGetLabel, 1);
- statusGetLabel.x = winSize.width / 2;
- statusGetLabel.y = winSize.height - 100;
- statusGetLabel.setString("Status: Send Get Request to httpbin.org");
- //set arguments with <URL>?xxx=xxx&yyy=yyy
- xhr.open("GET", "http://httpbin.org/get?show_env=1", true);
- xhr.onreadystatechange = function () {
- if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status <= 207)) {
- var httpStatus = xhr.statusText;
- var response = xhr.responseText.substring(0, 100) + "...";
- var responseLabel = new cc.LabelTTF("GET Response (100 chars): \n" + response, "Thonburi", 16);
- that.addChild(responseLabel, 1);
- responseLabel.anchorX = 0;
- responseLabel.anchorY = 1;
- responseLabel.textAlign = cc.TEXT_ALIGNMENT_LEFT;
- responseLabel.x = 10;
- responseLabel.y = winSize.height / 2;
- statusGetLabel.setString("Status: Got GET response! " + httpStatus);
- }
- };
- xhr.send();
- var xhr = cc.loader.getXMLHttpRequest();
- var statusPostLabel = new cc.LabelTTF("Status:", "Thonburi", 18);
- this.addChild(statusPostLabel, 1);
- statusPostLabel.x = winSize.width / 2;
- statusPostLabel.y = winSize.height - 140;
- statusPostLabel.setString("Status: Send Post Request to httpbin.org with plain text");
- xhr.open("POST", "http://httpbin.org/post");
- //set Content-type "text/plain;charset=UTF-8" to post plain text
- xhr.setRequestHeader("Content-Type","text/plain;charset=UTF-8");
- xhr.onreadystatechange = function () {
- if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status <= 207)) {
- var httpStatus = xhr.statusText;
- var response = xhr.responseText.substring(0, 100) + "...";
- var responseLabel = new cc.LabelTTF("POST Response (100 chars): \n" + response, "Thonburi", 16);
- that.addChild(responseLabel, 1);
- responseLabel.anchorX = 0;
- responseLabel.anchorY = 1;
- responseLabel.textAlign = cc.TEXT_ALIGNMENT_LEFT;
- responseLabel.x = winSize.width / 10 * 3;
- responseLabel.y = winSize.height / 2;
- statusPostLabel.setString("Status: Got POST response! " + httpStatus);
- }
- };
- xhr.send("plain text message");
具体例子:
- 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);
- });