"'空'不是一个对象(评估' apiData.original_release_date.split')&#34 ;;

时间:2014-11-13 21:57:24

标签: javascript titanium

我正在制作一个来自GiantBomb API的应用程序,该应用程序将根据搜索到的查询显示游戏目录。我希望这能显示游戏的图片,标题和添加的日期。

基本上我遇到的问题是API以非常不合逻辑的方式显示游戏的创建日期(例如“1983-12-31 00:00:00”),最后一个字符始终为00:00: 00。 (这完全是多余的)我正在使用.split().join()删除并用空字符串替换它。虽然有些结果填充了,但我看到了结果,

我受到了这个大错误屏幕的欢迎,因为所有对象都有日期并且相应地被替换,因此我无法理解这个错误:

[ERROR] : Script Error { [ERROR] : backtrace = "#0 () at :0"; [ERROR] : line = 54; [ERROR] : message = "'null' is not an object (evaluating 'apiData.original_release_date.split')"; [ERROR] : name = TypeError; ; [ERROR] : }

这也将随机停止许多其他行的填充,没有明显的原因。所有这些都有自己的日期。

这是全球对象......:

var nameObject = { name : "", original_release_date : "", image : "",

由此循环填充

        var posts = json.results;


        //Looping through the posts via JSON/////////////////////////
        for (var i = 0; i < posts.length; i++) {
            var apiData = json.results[i];
            nameObject.name = apiData.name;
            nameObject.original_release_date = apiData.original_release_date.split("00:00:00").join("");
            nameObject.image = apiData.image;
            console.log(nameObject.name);
            console.log(apiData.original_release_date);

我想避免任何RegExp。任何想法都会受到很大的赞赏。谢谢!

2 个答案:

答案 0 :(得分:0)

考虑到您总是在1983-12-31 00:00:00获得apiData.original_release_date的价值。

要分割,您可以使用:

nameObject.original_release_date = apiData.original_release_date.split(" ")[0];

P.S:如果您首先检查数据格式(意味着它是否符合您的预期),也会更好。

答案 1 :(得分:0)

我发现了我的问题!所以我想,这完全是API的错。有些original_release_date值实际上为空,因此为null。我也注意到了一些图像。我的解决方案基本上是在我的for循环中打了一堆条件。

        //Looping through the posts via JSON/////////////////////////
        for (var i = 0; i < posts.length; i++) {
            var apiData = json.results[i];
            nameObject.name = apiData.name;
            if (apiData.original_release_date != null) {
                nameObject.original_release_date = apiData.original_release_date.split(" ")[0];

            } else {

                nameObject.original_release_date = "";
            }
            if (apiData.image != null) {
                nameObject.img = apiData.image.super_url;
            } else {

                nameObject.img = "";
            }

            if (apiData.name != null) {
                nameObject.name = apiData.name;
            } else {

                nameObject.name = "(Unknown Game Name)";
            }`

如果有人有更有效的解决方案,请告诉我 - 谢谢!