【发布时间】:2011-05-04 17:53:54
【问题描述】:
我在这里遇到了一些麻烦。我使用 C# 创建了一个 Web 服务。当我调用 WebService 时,它工作正常。 Javascript 似乎正在访问 web 服务、中断,然后继续执行其余操作。我认为这是我错误地调用 WebService 的问题。我到处搜索,发现了很多不同的例子,但是,它们似乎都不起作用。
如果您转到http://success.darkslidedesign.com,它会触发 test.js,然后调用我位于此处的 Web 服务:http://www.darkslidedesign.com/services/ms_Alert.asmx
这里是 test.js 代码 -
var xmlHttp;
setTimeout("sendMessage('rory@careercheatcode.com');", 2000);
function doUpdate()
{
if(xmlHttp.readyState===4){
alert("Worked");
}
else{
alert("Broke");
}
}
function sendMessage(strTo)
{
try{
// Opera 8.0+, Firefox, Safari
xmlHttp = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Ajax is not supported
return false;
}
}
}
xmlHttp.open("post", "http://www.darkslidedesign.com/services/ms_Alert.asmx", true);
var params = "op=Sending_Email&strEmailAddrFrom=rory@darkslidedesign.com&strEmailAddrTo=" + strTo;
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.onreadystatechange=doUpdate;
xmlHttp.send(params);
return false;
}
【问题讨论】:
-
我强烈建议为此使用 jQuery 广泛而轻量的 AJAX 库:api.jquery.com/jQuery.ajax
-
Getting a readystate != 4 并不意味着它坏了;它只是意味着请求尚未完成加载。另外,请尝试使用两个等号而不是三个等号。
-
@lazycs:通常在 javascript 中,您应该始终使用 3 个等号来测试相等性。否则,由于类型强制,您最终可能会得到意想不到的结果。
-
@lazycs - 我知道它不会破坏它。这是虚拟文本。
-
请注意问题不在于 DoUpdate 函数。我的问题出在下面的代码中。我需要以这种方式设置它,因为客户端只能在页面中包含一个 javascript 文件(指向 test.js),并且应该处理其余的。
标签: c# javascript ajax web-services