我有这个JS代码,它将从C#代码
接收字符串值function getMsg() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "andSert.asmx/GetMessage", true); //async
var temp = the string I receive from the GET above
return temp;
}
这是C#代码
[WebMethod]
public string GetMessage() {
XmlTextReader reader = new XmlTextReader (Global.sAppPath + "/alt/importantMsg.xml");
string message = null;
while (reader.Read()) {
if (reader.IsStartElement ()) {
switch (reader.Name.ToString ()) {
case "Message":
message = reader.ReadString();
break;
}
}
}
return message;
}
我的问题是我不知道如何实例化我在JS代码中执行GET请求时获得的消息。我测试过一切正常,并返回一个字符串。但我需要实例化该字符串,以便我可以在另一个JS文件中使用它。
我该怎么做?
答案 0 :(得分:1)
您可能需要考虑使用jQuery $ .ajax,因为它可以保护您免受浏览器怪癖的影响。
同步解决方案:
function getMsg() {
var msg = "";
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
msg = JSON.parse(xmlhttp.responseText).d;
}
};
xmlhttp.open("GET","andSert.asmx/GetMessage",false);
xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
xmlhttp.send();
return msg;
}
异步解决方案:
function getMsg(fCallback) {
var msg = "";
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
fCallback(JSON.parse(xmlhttp.responseText).d);
}
};
xmlhttp.open("GET","andSert.asmx/GetMessage",true);
xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
xmlhttp.send();
}
getMsg(function(message) { alert(message); });
此外,服务必须妥善装饰:
using System.Web.Script.Services;
using System.Web.Services;
namespace Whatever {
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class andSert : System.Web.Services.WebService {
[ScriptMethod(UseHttpGet = true)]
[WebMethod]
public string GetMessage() {
return "Hello World";
}
}
}
请注意,这些类的名称应为class MyFavouriteClass
,使用class andSert
来匹配您的问题。