XMLHttpRequest

服务端代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;


namespace SoccerWeb
{
    /// <summary>
    /// ScoreHandler 的摘要说明
    /// </summary>
    public class ScoreHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "application/json;charset=UTF-8"; // "text/plain";
            context.Response.AddHeader("Access-Control-Allow-Origin", "*");
            context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");

            JavaScriptSerializer json = new JavaScriptSerializer();
            Order p1 = new Order();
            p1.Name = "aa";
            p1.Age = 12;

            Order p2 = new Order();
            p2.Name = "bb";
            p2.Age = 12;

            string str = json.Serialize(new List<Order>() { p1, p2 });

            context.Response.Write(str);
            context.Response.End();
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

  

客户端:

var winSize = null;

var XhrLayer = cc.Layer.extend({
    ctor:function () {
        if (!this._super()) {
            return false;
        }
        return true;

        this.onEnter();
    },

    onEnter: function() {
        this._super();
        var l = cc.LabelTTF.create("Get infos via XHR", "Thonburi", 16);
        this.addChild(l, 1);
        l.x = cc.director.getWinSize().width / 2;
        l.y = cc.director.getWinSize().height - 60;

        this.sendGetRequest();
        this.sendPostRequest();

        var l2 = cc.LabelTTF.create("Get infos via XHR2", "Thonburi", 16);
        this.addChild(l, 1);
        l2.x = cc.director.getWinSize().width / 2;
        l2.y = cc.director.getWinSize().height - 80;
    },

    sendGetRequest: function() {
        var that = this;
        var xhr = cc.loader.getXMLHttpRequest();
        var statusGetLabel = cc.LabelTTF.create("Status:", "Thonburi", 18);
        this.addChild(statusGetLabel, 1);
        statusGetLabel.x = cc.director.getWinSize().width / 2;
        statusGetLabel.y = cc.director.getWinSize().height - 100;
        statusGetLabel.setString("Status: Send Get Request to httpbin.org");
        
        xhr.open("GET", "http://172.18.65.100:8080/SoccerWeb/ScoreHandler.ashx");

        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var httpStatus = xhr.statusText;
                var response = xhr.responseText.substring(0, 50) + "...";
                var responseLabel = cc.LabelTTF.create("GET Response (50 chars): 
" + response, "Thonburi", 16);
                that.addChild(responseLabel, 1);
                responseLabel.anchorX = 0;
                responseLabel.anchorY = 1;
                responseLabel.textAlign = cc.TEXT_ALIGNMENT_LEFT;

                responseLabel.x = cc.director.getWinSize().width / 6;
                responseLabel.y = cc.director.getWinSize().height / 2;
                statusGetLabel.setString("Status: Got GET response! " + httpStatus);
            }
        };
        xhr.send();
    },

    sendPostRequest: function() {
        var that = this;
        var xhr = cc.loader.getXMLHttpRequest();
        var statusPostLabel = cc.LabelTTF.create("Status:", "Thonburi", 18);
        this.addChild(statusPostLabel, 1);

        statusPostLabel.x = cc.director.getWinSize().width / 2;

        statusPostLabel.y = cc.director.getWinSize().height - 140;
        statusPostLabel.setString("Status: Send Post Request to httpbin.org");

        
        xhr.open("POST", "http://172.18.65.100:8080/SoccerWeb/ScoreHandler.ashx");
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var httpStatus = xhr.statusText;
                var response = xhr.responseText.substring(0, 50) + "...";
                var responseLabel = cc.LabelTTF.create("POST Response (50 chars):  
" + response, "Thonburi", 16);
                that.addChild(responseLabel, 1);
                responseLabel.anchorX = 0;
                responseLabel.anchorY = 1;
                responseLabel.textAlign = cc.TEXT_ALIGNMENT_LEFT;

                responseLabel.x = cc.director.getWinSize().width / 2;
                responseLabel.y = cc.director.getWinSize().height / 2;
                statusPostLabel.setString("Status: Got POST response! " + httpStatus);
            }
            else
            {
                cc.log(xhr.statusText);
            }
        };
        xhr.send("test=ok");
    }
});

var XhrScene = cc.Scene.extend({
    onEnter:function () {
        this._super();
        this.addChild(new XhrLayer());
    }
});

  客户端打包后无法使用XMLHttpRequest,只能在网页版本中用

原文地址:https://www.cnblogs.com/linn/p/3675010.html