5

sammy.js在我的单页应用程序中使用插件。该插件不起作用,每当用户尝试在页面中导航时,它都会在控制台上显示以下错误:

[Tue Dec 04 2012 17:48:13 GMT+0530 (India Standard Time)] #main 404 Not Found get /page_home  
Error
arguments: undefined
get stack: function () { [native code] }
message: "404 Not Found get /page_home "
set stack: function () { [native code] }
type: undefined
__proto__: d

这是什么问题,如何解决?

编辑

萨米配置代码:

 var app = $.sammy('#main', function () {
        this.get('#/:name', function () {
            var id = this.params['name'];
            $.trim(id);
            var flag = true;

            if ($("#main").hasClass("presentation")) {
                $.each(slides, function (i, v) {
                    if ($(v).attr("class") == id) {
                        ScanNavigationD(id);
                        flag = false;
                        return false;
                    }
                });
                if (flag) {
                    ScanNavigationD($(slides[0]).attr("class"));
                }
            }
            else if ($("#main").hasClass("printdoc") || typeof $("#main").attr("class") == "undefined") {
                $.each(Pages, function (i, v) {
                    if ($(v).attr("class") == id) {
                        ScanNavigationD(id);
                        flag = false;
                        return false;
                    }
                });
                if (flag) {
                    ScanNavigationD($(Pages[0]).attr("class"));
                }
            }
        });
    });

    $(function () {
        app.run();
    });
4

3 回答 3

2

@tom-rider 问题是 app.run 没有参数调用。sammy app.run 函数接受一个 start_url 参数来设置(通过 _setLocation 方法)在调用 _checkLocation 方法以检查 url 是否更改之前的应用程序当前位置......所以尝试更改

app.run();

app.run('#/');

这对我有用。

按照这个小提琴进行工作演示并查看控制台:没有错误!

于 2012-12-11T03:14:52.683 回答
0

似乎您page_home在运行解析为 404 not found 错误的脚本时作为参数发送。尝试在整个文件中查找“page_home”,以递归方式查找其来源。

于 2012-12-11T22:59:43.033 回答
0

这个简单的代码会起作用吗?

var app = $.sammy('#main', function () {
    this.get('#/:name', function () {
        alert(this.params['name']);
    });
});

$(function () {
    app.run();
});

如果这个小代码警告'page_home',你的脚本里面有问题:那么你应该能够回答这些问题:ScanNavigationD-Function 在哪里?“幻灯片”/“页面” - 数组定义在哪里?

编辑:

好的,我在我的电脑上做了另一个测试。这就是我所做的:

  1. 创建了一个 html 文档
  2. 首先包括 jQuery,然后是 sammy.js

    <script src="http://code.jquery.com/jquery-1.8.3.min.js" type="text/javascript">

    <script src="sammy.js" type="text/javascript">

  3. 我用虚拟内容填充了我要求的变量和函数:

    <脚本>

    var ScanNavigationD = function() {}, slides = ['slide1', 'slide2'], Pages = ['page1', 'page2'];

    <脚本>

  4. 然后我将您的代码复制粘贴到我的 html 文档中。

    <script> //你的代码 <script>

  5. 然后我创建了 div-main 容器:

一切正常。我看到你做错的最后一件事是,你只是在你的本地文件系统上。

sammy.js 似乎需要一个网络服务器才能运行!至少本地主机!

file://...

不管用

于 2012-12-08T20:24:20.120 回答