从另一个Web服务的Success函数调用C#webservice?

时间:2016-11-02 13:28:34

标签: javascript c# asp.net web-services

我的问题很简单。你能从另一个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);
      }

 }

有效。如果某人有更优雅的态度,我会非常感兴趣 谢谢。

3 个答案:

答案 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
    .
    .
  }

我希望这会有所帮助....所有这些都只是基于假设...请明确你正在使用的内容,我们的答案也会更清楚。