簡體   English   中英

從另一個Web服務的成功函數中調用C#Web服務?

[英]Calling a C# webservice from the Success function of another Webservice?

我的問題很簡單。 您可以從另一個Web服務的“成功”功能調用C#Web服務嗎? 我認為答案是否定的。

我有一個登錄Web服務,當用戶嘗試執行需要該用戶登錄的操作時,將調用該登錄Web服務。此操作將調用另一個Web服務,當操作完成時,它不會進入onSuccess函數。 我以為它不能這樣做? 這個對嗎?

示例代碼,而不是實際代碼。

webservice.login(onLoginSuccess)

function onLoginSuccess(){

    webservice.doSomething(onDoSomethingSuccess)

}

function onDoSomethingSuccess(){

    .... does not get here.

}

這是它的基本代碼。

在客戶端JavaScript調用上,登錄Web服務成功。

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。

我想我知道問題出在哪里,在notifyWithUser函數中調用了updateDateData,將執行控制權交還給notifyWithUser函數,而不是轉到SucceededtoCallbackDateRefresh成功函數中,因為它是一個異步調用。 我認為某種回調函數是必需的。

我通過在onLoginSuccess函數的setInterval()中調用updataDateData函數來解決此問題。

 function onLoginSuccess(result){ 

      if (negotiate) {              
           timerInterval = setInterval("updateDateData()", 300);
      }

 }

有用。 如果有人采用更優雅的方法,我將非常感興趣。
謝謝。

如何使用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;
}

你絕對可以。

僅從理論上給出建議/建議,您可以為第一個Web服務方法的狀態響應提供一個局部變量,可以將其設置為布爾值,代表第一次調用的成功。 然后,如果您的本地變量符合您的成功條件,則可以依次調用另一個Web服務方法。

我提供的只是一個想法,對於更具體的答案,我建議您發布正在使用的實際代碼。

謝謝。

我假設您正在服務器上使用.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
    .
    .
  }

我希望這會有所幫助...。盡管這只是假設,但...請清楚您使用的是什么,我們的回答也將更加清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM