我不清楚我应该如何使用sammyjs从外部API加载json.
这段代码效果很好:
this.get('#/contact', function(context) {
this.load('somefile.json')
.then(function(items) {
$.each(items, function(i, item) {
context.log(item);
});
});
});
Run Code Online (Sandbox Code Playgroud)
然而,通过http加载的相同json失败:
this.get('#/contact', function(context) {
this.load('http://samedomain/api/getdata')
.then(function(items) {
$.each(items, function(i, item) {
context.log(item);
});
});
});
Run Code Online (Sandbox Code Playgroud)
当通过http加载时,sammy不再将json视为对象,并且似乎将数据解析为文本.
大家都清楚这不是域访问的问题.
header('Access-Control-Allow-Origin: *');
Run Code Online (Sandbox Code Playgroud)
我也不相信这是我的json格式的问题,因为它作为本地文件加载时似乎工作正常.
我的休息api也在使用:
"Content-Type: application/json;
Run Code Online (Sandbox Code Playgroud)
更新: 我把这个用在wordpress中,并在它帮助其他人的情况下在此列出
(function($) {
var app = $.sammy('#main', function() {
this.use('Template');
this.helpers({
loadJSON: function(location, options, callback) {
options = $.extend(options, {json: true});
return new Sammy.RenderContext(this).load(location, options, callback);
}
});
this.get('#/', function(context) {
this.loadJSON('http://localhost/wp-somesite/wp-admin/admin-ajax.php?action=get_all_cases')
.then(function(items) {
$.each(items, function(i, item) {
context.log(item);
});
});
});
});
$(function() {
app.run('#/');
});
Run Code Online (Sandbox Code Playgroud)
})(jQuery的);
除了VoDurden所说的,您还可以传递显式设置dataType的加载选项.如果你看一下Github上的Sammy Load函数,你会发现它只是一个ajax调用的包装器.
尝试这样的事情:
loadOptions = {
type: 'get',
dataType: 'json',
data: {query: variable},
};
context.load("http://path.com/api/", loadOptions);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1425 次 |
| 最近记录: |