无法将对象道具保存到parse.com表

时间:2015-09-01 21:02:41

标签: javascript jquery html parse-platform

我的表单中包含textbox 标题dropdown menu 和一个按钮。当我单击该按钮时,我希望将titleyear的值作为对象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>

请注意,当我尝试仅将标题保存到表格时,它可以正常工作。

2 个答案:

答案 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()中,但年份值不是正确的类型。  所以请注意那里的任何人 - 检查您的数据类型!