Signalr invode未返回输出xml,angularjs
对于SPA,必须使用angularjs,信号员。信号器调用需要xml作为基于输入xml的输入参数,输出xml将返回我必须解析和获取的基本数据。 解析数据包含要在HTML页面上使用的标题/标签,通过控制器进行设置 当通过invoke方法调用时,不会返回数据中的输出xml。 这是代码Signalr invode未返回输出xml,angularjs,xml,angularjs,Xml,Angularjs,对于SPA,必须使用angularjs,信号员。信号器调用需要xml作为基于输入xml的输入参数,输出xml将返回我必须解析和获取的基本数据。 解析数据包含要在HTML页面上使用的标题/标签,通过控制器进行设置 当通过invoke方法调用时,不会返回数据中的输出xml。 这是代码 function ServerTimeController($scope, signalRHubProxy) { var serverHubProxy = signalRHubProxy(
function ServerTimeController($scope, signalRHubProxy) {
var serverHubProxy = signalRHubProxy(
signalRHubProxy.defaultServer, 'serverTimeHub');
$scope.getServerData = function () {
serverHubProxy.invoke('getBnoData', '
<?xml version="1.0" encoding="utf-8"?>
<ENVELOPE NAME="PV.ENVELOPE" VERSION="1.00" CREATE="">
<ENVELOPE_DATA>
<TOKEN />
<IPADDRESS />
<USERAGENT />
<LANGUAGE>LANGUAGE:ENGLISH</LANGUAGE>
<ORIGINATOR>PV.TC.WEB.UI</ORIGINATOR>
</ENVELOPE_DATA>
<APPLICATION_REQUEST VERSION="1.00" LANGUAGE="EN">
<BNO_REQUEST VERSION="1.00">
<BNO_PRODUCTION_MODE>TRUE</BNO_PRODUCTION_MODE>
<BNO_GROUP>LOGIN</BNO_GROUP>
<BNO_INTERACTION_NAME>GET_T_PRE_APP_INIT</BNO_INTERACTION_NAME>
<BNO_INTERACTION_VERSION>1.00</BNO_INTERACTION_VERSION>
<BNO_INTERACTION_MODE>INTERACTION_MODE:VIEW</BNO_INTERACTION_MODE>
<BNO_PARAMETERS>
<BNO_PARAM NAME="LINGO">
<VALUE>EN</VALUE>
</BNO_PARAM>
</BNO_PARAMETERS>
</BNO_REQUEST>
</APPLICATION_REQUEST>
</ENVELOPE>
', function (data) {
$scope.currentServerTimeManually = data;
console.log(data);
});
};
};
然而,当使用srv.client.receiveData时,它会给出输出xml,但我需要将其集成到angularjs中
中心代码如下:
using Microsoft.AspNet.SignalR;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using System.Web;
using System.Xml;
using IDF.FACADE;
namespace PV.COM.WEB
{
public class PvHub : Hub
{
///
<summary> /// Function to be called from client siede
/// </summary>
///
<param name="piAppRequest">
</param>
public void GetBnoData(string piAppRequest)
{
...deleted code here
/// call BackendAPI (Facade) to retrieve XML with content.
callFacade = new Facade("PV.GLOBAL.APPCONFIG.XML");
answer = callFacade.ExecuteAppRequest(piAppRequest);
...deleted code here
/// call function on JS client side to send XML data with content filled by Facade
Clients.Caller.receiveData(answer);
}
...deleted code here
}
}
我认为有一些事情看起来不正确,但我最清楚的是,您正在向调用它的receiveData的调用方发送数据,但是您没有在客户端代码中定义任何receiveData处理程序 更新 正如我所说,您没有在客户机上定义receiveData回调,但是添加它会对您当前的客户机代码组织产生影响。这不是一件困难的事情,但你必须改变一些东西。相反,如果您只是从以下位置更改中心代码:
public void GetBnoData(string piAppRequest)
{
//getting answer...
Clients.Caller.receiveData(answer);
}
到
然后根据当前客户端代码。完成。。。就行了。您能添加Hub的代码吗?不清楚如何从那里返回数据。请告诉我如何在angularjs工厂代码中调用receiveData谢谢,问题是我在建立连接后调用了receiveData,这应该总是在之前。现在能够捕获数据。
public void GetBnoData(string piAppRequest)
{
//getting answer...
Clients.Caller.receiveData(answer);
}
public dynamic GetBnoData(string piAppRequest) //from void to dynamic
{
//getting answer...
return answer;
}