我使用stackmob已经有几天了,它仍然是新的,网上没有太多的信息。我遇到了这个问题:我不会得到我的stackmobe "db“中所有商店名称的列表,这个方案称为store,下面是我使用的代码:
var Store = StackMob.Model.extend({
schemaName: 'store'
});
var stores = new Store();
stores.fetch({
success: function(collection) {
//after we've gotten all the Todo items from StackMob, let's see what we have!
console.debug(collection.toJSON());
alert(collection.toJSON());
},
error: function(collection, response){
alert(collection.toJSON());
}
}); 我在chrome日志中看到以下错误:
OPTIONS http://api.stackmob.com/store 400 (Bad Request)
XMLHttpRequest cannot load http://api.stackmob.com/store. Origin http://127.0.0.1:4567 is not allowed by Access-Control-Allow-Origin.任何帮助都将不胜感激!
发布于 2013-02-14 03:56:38
我能问一下你在什么环境下运行吗(chrome,firefix,safari,opera,phonegap)?默认情况下,JS SDK被配置为对相对路径进行AJAX调用。例如"/store“它看起来像是被配置成直接点击"api.stackmob.com”,这只在以下情况下才会发生:
JS SDK检测到您正在使用PhoneGap
StackMob.init({ ...apiURL:'http://api.stackmob.com/‘})
我问自己的第一个问题是,当你在Python服务器上运行时,它是如何调用api.stackmob.com的:(我假设是这样的,因为我在你的原始帖子中看到了127.0.0.1:4567 )
Dennis Rongo在上面指出的另一件事是你的Python版本。我们测试了2.7,但听起来他注意到了3.3的问题。但是从127.0.0.1:4567命中api.stackmob.com仍然是意想不到的。你有apiURL吗:'...‘在你的init中设置?如果是这样的话,我会尝试删除它。
设置apiURL将使SDK直接调用api.stackmob.com (api.stackmob.com/store),浏览器的行为将像任何常规AJAX调用一样,如果它要跨域,则会阻止它,并给出您看到的错误。
好吧,让我知道!我们绝对想让你上路!
埃里克
另外,我认为你也在尝试获得不止一家商店。StackMob.Model只代表一个商店。你想要StackMob.Collection。
例如:
var Store = StackMob.Model.extend({ schemaName: 'store' });
var Stores = StackMob.Collection.extend({ model: Store });
var stores = new Stores();
stores.fetch({
success: function(results) {
console.log(results.toJSON()); //should print out array of JSON objects representing your store items.
}
});更多信息:http://developer.stackmob.com/tutorials/js/Query-an-Object
发布于 2013-02-13 08:23:40
我以前从未使用过StackMob,但我决定试一试,并能够在本地(localhost或http://127.0.0.1/)使用它。
这里有一些你可以看的东西。
StackMob Dashboard并检查您的Schema是否正确设置了权限级别。如果您的任何操作没有设置为Open,请在进行Fetch()调用之前检查您是否正确地进行了身份验证。Python脚本)。Installation instructions。Python可以从here下载。安装说明包含stackmobserver.py,您需要将其放在项目的根目录下。导航到项目的根目录,并使用要初始化的Command执行Python脚本(仅限开发目的)。
python stackmobserver.py
init和authentication脚本。/**初始化StackMob */ StackMob.init({...});/**使用用户架构执行身份验证*/ var StackMob.User=新用户名({用户名:'yourUser',密码:'yourPassword‘});user.login(false,{ success: function (StackMob.User){ /**为通过身份验证的用户执行模型获取。*/ },错误: function (模型,响应){ console.debug( response);} });
希望这能有所帮助。
https://stackoverflow.com/questions/14838265
复制相似问题