我的表单中包含textbox
标题,dropdown menu
年和一个按钮。当我单击该按钮时,我希望将title
和year
的值作为对象Movie
的属性。然后将它们保存到parse.com上的表中。下面的代码会在表格中添加一个值为未定义的记录。
<script>
function saveValues() { // function is appended as onclick to button
var $titleValue = $('#inputTitle').val();
var $select = $('#select');
var $yearValue = $select.val();
var Movie = Parse.Object.extend("Movie");
var movie = new Movie();
// movie.set('title', $titleValue); // Doesn't work. Returns undefined
// movie.set('year', $yearValue); // Doesn't work. Returns undefined
movie.title = $titleValue; // Works
movie.year = $yearValue; // Works
alert(movie.title); // Returns the value
alert(movie.year); // Returns the value
alert(movie); // Returns [object Object]. I was expecting {title: '<SOMETITLE>', year: '<SOMEYEAR>'}
console.log(movie); // This prints a lot of stuff and title and year are there with the respective values.
movie.save()
.then(function(object) {
alert("yay! it worked");
})
}
</script>
请注意,当我尝试仅将标题保存到表格时,它可以正常工作。
答案 0 :(得分:0)
如果没有看到完整的代码,我无法保证这会有效,但请尝试一下:
movie.save({
title : $titleValue,
year : $yearValue,
}, {
success: function(movie) {
alert("movie saved successfully with title: " + movie.get("title") +
", and year: " + movie.get("year"));
},
error: function(error) {
alert("error, movie save failed. error code: " + error.code + ", " error.message);
}
});
至少你会有一条描述性的错误信息,告诉你出了什么问题。基于你说它只保存标题而不是年份的事实,我怀疑这可能是因为你的年份&#39; Parse中的字段存储为数字,但是您将其作为字符串传递(因为它来自HTML表单,我假设)。
如果这不起作用,我也怀疑它可能与将此功能附加到按钮上载而不是单击或提交有关。但这并不能解释为什么如果你只剩下这一年它仍然有效。
最后,我想知道Parse的SDK是否被&#39; $&#39;混淆了。变量名称开头的符号,但我不明白为什么会这样。
答案 1 :(得分:0)
好的,过了一段时间我发现了问题所在。这是一个愚蠢的。事实证明,option中的值是'string'类型。通过像这样添加 parseInt():var $yearValue = parseInt($select.val());
。而然后 movie.save({title: titleValue, year: yearValue}).....
这样一切都有效。最初,我曾尝试将键值对放在save()中,但年份值不是正确的类型。
所以请注意那里的任何人 - 检查您的数据类型!