簡體   English   中英

啟用AJAX的WCF服務功能可重定向到新窗口

[英]AJAX enabled WCF Service function to redirect to a new window

場景 :我將使用AJAX訪問外部Web服務[ExternalWS]。 因此很明顯,首先需要創建本地代理服務[LocalProxyWS],然后它將訪問外部Web服務。 現在,外部服務webmethod [Process]基本上將我們網站上的當前頁面重定向到他們的網站,進行一些工作,然后返回到我們的網站。

我想要的是 :我希望當用戶單擊我們網站上的按鈕(“處理”)時,它應該打開一個新窗口,然后開始在新窗口上執行請求,以便我可以將網站上的頁面會永久顯示(這將每15秒輪詢一次請求(通過本地代理)到外部服務的狀態)。

希望我的解釋清楚。

下面是到目前為止的代碼,如果有其他方法可以作為一種有效的替代方法,請隨時發表評論。

調用外部服務的本地代理服務如下。

    [ServiceContract(Namespace = "LocalProxy")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class LocalProxyToExternalService
{
    [OperationContract]
    public void InitiateTransaction(string amount)
    {
        //NOTE: Basically want to call the external service from here in 
                a new window.....
        //HttpContext.Current.Response.Redirect("www.google.com", false);
    }
}

我的頁面代碼如下...

        function PayWithXYZ() {

         var newWindow = window.open('', '_blank', 'width=500,height=500', false);
         newWindow.focus();

        var service = new LocalProxy.LocalProxyToExternalService();
        service.InitiateTransaction($('input[id*=TextBox1]').val());   //, OnPayWithXYZCompleted, OnPayWithXYZError);
    }

    function OnPayWithXYZCompleted(result) {
        $('span[id*=Label1]').text(result);            
    }

    function OnPayWithXYZError(result) {
        alert(result.get_message());
    }

</script>


<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Services>
        <asp:ServiceReference Path="~/Services/LocalProxyToExternalService.svc" />
    </Services>
</asp:ScriptManager>   


<div>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Pay with XYZ" OnClick="Button1_Click" />
    <input id="Button2" type="button" value="Client Button" onclick="PayWithXYZ();" />
</div>
<asp:Label ID="Label1" runat="server" ForeColor="Red" Text="Label"></asp:Label>

基本上,我要通過單擊按鈕打開一個新窗口,然后想在該新窗口中處理新請求,以便可以從網站上的當前頁面向用戶顯示狀態

到目前為止,它會打開新窗口,但不會將請求轉移到該窗口,但是我在firebug中收到如下錯誤消息... 在此處輸入圖片說明

這樣的Web服務沒有任何UI,因此您從瀏覽器進行的所有Web服務調用都處於后台-因此,我不清楚是否需要在新窗口中執行服務-IMO,根本不需要。

您的錯誤消息表明您的Web服務InitiateTransaction沒有返回正確的數據。 該方法的實現是什么。 IMO,它應該調用外部Web服務-通過使用服務代理(如果是SOAP服務,則由“添加服務引用”創建),或者通過使用WebClient / WebRequest(如果是基於REST的服務)。

暫無
暫無

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

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