我的问题很简单。你能从另一个web服务的Success函数调用C#webservice吗?我认为答案是否定的。
我有一个登录Web服务,当用户尝试执行需要用户登录的操作时调用该服务。然后调用另一个Web服务,当操作完成时,它不会进入onSuccess函数。我假设它不能这样做?这是对的吗?
示例代码,而非实际代码。
webservice.login(onLoginSuccess)
function onLoginSuccess(){
webservice.doSomething(onDoSomethingSuccess)
}
function onDoSomethingSuccess(){
.... does not get here.
}
这是它的代码。
在客户端JavaScript调用上,登录webservice成功。
function onLoginSuccess(result){
negotiateWithUser(true,
activeUser.id,
negotiation.dateID,
activeUser.showChat,
true);
}
function negotiateWithUser() {
<code>
if (justLoggedIn) updateDateData();
<code>
}
function updateDateData(){
if (populate==false){
populate=true;
WebService.Negotiations.DatesGet(activeUser.id,SucceededtoCallbackDateRefresh, ErrorHandler);
}
}
即使返回数据并且没有错误,也不会进入SucceededtoCallbackDateRefresh函数。
我想我知道问题是什么,在negotiateWithUser函数中调用updateDateData,执行控制被返回到negotiateWithUser函数而不是进入SucceededtoCallbackDateRefresh成功函数,因为它是异步调用。我认为需要某种回调函数。
我通过在onLoginSuccess函数中的setInterval()中调用updataDateData函数来解决问题。
function onLoginSuccess(result){
if (negotiate) {
timerInterval = setInterval("updateDateData()", 300);
}
}
有效。如果某人有更优雅的态度,我会非常感兴趣 谢谢。
答案 0 :(得分:1)
如何使用jQuery.ajax()?
function Func1() {
$.ajax({
url:'MyWebService.asmx/Func1',
success:Func1Success,
error: function () {
alert('there was an error!');
},
});
return false;
}
function Func1Success(output){
$.ajax({
url:'MyWebService.asmx/Func2',
success:Func1SuccessToSuccess,
error: function () {
alert('there was an error!');
},
});
}
function Func1SuccessToSuccess() {
return false;
}
答案 1 :(得分:0)
你绝对可以。
从理论上给出建议/建议,您可以为第一个Web服务方法的状态响应提供1个局部变量,您可以将其设置为boolean,表示第一次调用的成功。然后,如果您的局部变量与您的成功条件匹配,则可以按顺序调用其他Web服务方法。
我提供的只是一个想法,对于更具体的答案,我建议您发布您正在处理的实际代码。
感谢。
答案 2 :(得分:0)
我假设您在服务器上使用.cs文件,然后从android调用它们。 如果这是你正在做的事情,那么有一种方法可以在另一个方法成功时调用方法。只需将两个.cs文件说成x和y并将其存储在您的服务器上。然后从android(x)中调用其中一个,然后在x中创建y的对象,这将是全部。 例如。这是我的一个名为abc.cs的.cs文件,它从android调用。
[WebMethod]
public xyz IsLoggedIn()
{
xyz example = new xyz();
//do something
.
.
return example;
}
现在xyz.cs将是:
[WebMethod]
public void onSuccessofIsLoggedIn()
{
//do something
.
.
}
我希望这会有所帮助....所有这些都只是基于假设...请明确你正在使用的内容,我们的答案也会更清楚。