我的要求就是在展开时显示从数据库中检索的一组值.我正在使用jquery.
我正在尝试为我的一个GWT小部件合并一个数据缓存.
我有一个数据源接口/类,它通过我的后端RequestBuilder和JSON 检索一些数据.因为我多次显示窗口小部件,所以我只想检索一次数据.
所以我尝试使用app缓存.天真的方法是HashMap在单例对象中使用a 来存储数据.但是,如果支持,我还想使用HTML5的localStorage/sessionStorage.
HTML5 localStorage仅支持String值.所以我必须将我的对象转换为JSON并存储为字符串.但不知何故,我无法想出一个干净利落的方式.这是我到目前为止所拥有的.
我定义了一个具有两个函数的接口:fetchStatsList()获取可以在窗口小部件中显示的统计信息列表并fetchStatsData()获取实际数据.
public interface DataSource {
public void fetchStatsData(Stat stat,FetchStatsDataCallback callback);
public void fetchStatsList(FetchStatsListCallback callback);
}
Run Code Online (Sandbox Code Playgroud)
该Stat班是一个简单的JavaScript覆盖类(JavaScriptObject)与一些干将(的getName()等),我有一个正常的非超高速缓存实现RequestBuilderDataSource我的数据源,它看起来像如下:
public class RequestBuilderDataSource implements DataSource {
@Override
public void fetchStatsList(final FetchStatsListCallback callback) {
// create RequestBuilderRequest, retrieve response and parse JSON
callback.onFetchStatsList(stats);
}
@Override
public void fetchStatsData(List<Stat> stats,final FetchStatsDataCallback callback) {
String url = getStatUrl(stats);
//create RequestBuilderRquest, retrieve response and parse JSON
callback.onFetchStats(dataTable); …Run Code Online (Sandbox Code Playgroud) 我的RESTful API返回一个数组:
GET /test => [1367297123312,1.0,2.0,3.0,100]
Run Code Online (Sandbox Code Playgroud)
我有一个服务:
(angular
.module('app.services', ['ng', 'ngResource'])
.factory('myData', [
/******/ '$resource',
function ($resource) {
return $resource('test');
}])
);
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我需要得到数字.我试过了:
(angular
.module('app.controllers', ['ng', 'app.services'])
.controller('tweetsapiContr', [
/******/ '$scope', 'myData',
function ($scope, myData) {
myData.get({}, function (data) {
console.log(data);
};
}
])
);
Run Code Online (Sandbox Code Playgroud)
上面给我TypeError: Object #<h> has no method 'push'的错误,如果我用query,而不是get在服务,它返回有类似的方法对象的数组$get,$save等等,但调用$get例如回报undefined.
如何获得数字?从服务器响应哈希工作,但我试图弄清楚如何使它与数组一起工作.
我一直试图对这个主题做一些研究,甚至引用以下Stack Overflow线程:
但我的基本问题是这个.
当我构建我的Web应用程序时,我使用的工具包括Fiddler,Chrome开发者工具,Firebug等.我可以随时更改内容以进行测试.我甚至可以使用fiddler来更改发送到服务器的数据.
什么阻止别人打开我的网页并这样做呢?如果用户只需点击F12并打开Chrome Developer工具,并更改通过网络发送的数据,那么全世界的所有jQuery验证都是无用的,对吧?
我在这个领域仍然相对较新,这让我非常担心,因为我看到"开放式"协议变得越来越普遍.我还不了解SSL(这是我开始研究的事情列表),所以也许这就是答案,我只是没有深入挖掘.但是我操纵我的页面的灵活性似乎非常极端 - 这让我非常担心恶意可以做什么.
我想在ASP.NET WebAPI函数返回JSON时抛出异常,其中值为IEnumerable且HTTP请求方法为GET - 希望停止在顶级是数组的情况下生成任何JSON.
我试图通过创建MediaTypeFormatter来做到这一点.我能做到吗?还有另外一种方法可以做到这一点吗?谢谢.
就像是:
public class CustomFormatter : MediaTypeFormatter
{
public override Task WriteToStreamAsync(Type type, object value, Stream stream, HttpContentHeaders contentHeaders, TransportContext transportContext)
{
// Retrieve value for isGetRequest somehow...
if (value is IEnumerable && isGetRequest)
{
throw new InvalidOperationException();
}
...
}
}
Run Code Online (Sandbox Code Playgroud)