시나리오 : AJAX를 사용하여 외부 웹 서비스 [ExternalWS]에 액세스하려고합니다. 그래서 분명히 로컬 프록시 서비스 [LocalProxyWS]를 만들어야합니다. 그러면 로컬 웹 서비스에 액세스하게됩니다. 이제 외부 서비스 webmethod [프로세스]는 기본적으로 사이트의 현재 페이지를 사이트로 리디렉션하고 일부 작업을 수행 한 다음 다시 사이트로 돌아옵니다.AJAX 사용 가능 WCF 서비스가 새 창으로 리디렉션됩니다.
내가 원하는 내용 : 사용자가 사이트의 버튼 ('프로세스')을 클릭하면 새 창을 열어야하며 새 창에서 요청 실행이 시작되기를 원합니다. 내 웹 사이트의 페이지가 영구적으로 표시됩니다 (상태에 대해 로컬 프록시를 통해 외부 서비스에 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>
입니다 이제 웹 사이트의 현재 페이지에서 상태를 사용자에게 보여줄 수 있습니다.
지금까지 새 창을 열었지만 요청을 전송하지는 않지만 다음과 같은 오류 메시지가 표시됩니다. 다음과 같은 방화 광 ...
사실,이 UI에는 종류가 없습니다. 처리 버튼을 클릭하면 기본적으로 외부 웹 서비스 InitiateRequest 메소드를 호출하는 LocalProxy InitiateRequest 메소드가 호출됩니다. 외부 InitiateRequest 웹 메소드는 먼저 페이지를 자신의 페이지로 리디렉션 한 다음 거기에서 지불 처리를 수행합니다. 당신은 Paypal과 동일하다고 생각할 수 있지만 여기에서는 모두 동일한 페이지에서 발생합니다. 이게 도움이 되었으면 좋겠다. – DotNetInfo
@DotNetInfo, 어떻게 외부 웹 서비스가 페이지를 리디렉션 할 수 있습니까? (브라우저에서 호출되지 않을 수 있습니다)? API의 종류 - SOAP/XML 기반 API 또는 HTTP URL입니까? – VinayC