您的位置:首页 > 理论基础 > 计算机网络

XMLHttpRequest

2014-04-19 14:46 190 查看
服务端代码

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): \n" + 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):  \n" + 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,只能在网页版本中用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: