Uncaught ReferenceError: app is not defined, Uncaught SyntaxError: Unexpected token <. Something is missing

Uncaught ReferenceError: app is not defined, Uncaught SyntaxError: Unexpected token <. Something is missing

不知何故,按钮没有定义,即使它是由脚本指定的。缺少什么?

index.html

   $def with (form, text)
    <html>
        <head>
        <title>Reverser</title>
              <link rel="stylesheet" href="css/master.css">
        </head>
        <body>
            <div>
                <input id="str_invert_input" type="text">
                <button onclick="app.invert()">Invert</button>
            </div>
            <hr>
            <div>
                <h2 id="result"></h2>
            </div>
            <script src="/web/static/js/jquery-1.11.3.min.js" type="text/javascript"></script>
            <script src="/web/static/js/main.js" type="text/javascript"></script>
        </body>
    </html>

main.js

var app = {
  invert : function(){
    var str = $('#str_invert_input');
    var inputVal = str.val();
    var encoded = encodeURI(inputVal);

    var result = $('#result');

    // Add the web service URL
    $.get( "http://127.0.0.1:8081/"+encoded, function( data ) {

    result.html(data);

    });
  }

}

如您所见,应用程序似乎已被定义,并由 index.html 上的脚本调用。

main.py

import web
from web import form

urls = (
    '/(.*)', 'index',
)

render = web.template.render('C:/Users/A/Desktop/Web/templates')

my_form = form.Form(
                form.Textbox('', class_='textfield', id='textfield'),
                )

class invert:
    def GET(self, invert):
        web.header('Access-Control-Allow-Origin', '*')
        return render.index(form, "String Reverser!")
        #no code yet




app = web.application(urls, globals())

if __name__ == "__main__": 
    app.run()

我检查了你的 HTML 代码,发现脚本 type 定义错误。

你必须替换这个

<script src="/web/static/js/jquery-1.11.3.min.js" type="text/html"></script>
<script src="/web/static/js/main.js" type="text/html"></script>

随着

<script src="/web/static/js/jquery-1.11.3.min.js" type="text/javascript"></script>
<script src="/web/static/js/main.js" type="text/javascript"></script>

另一件事是,我认为

$def with (form, text)

如果此代码与 Javascript/jquery..

相关,则该代码应位于标头部分的脚本标记中

希望这对你有用。

您包含的文件使用了错误的类型

<script src="/web/static/js/jquery-1.11.3.min.js" type="text/html"></script>
<script src="/web/static/js/main.js" type="text/html"></script>

应该是

<script src="/web/static/js/jquery-1.11.3.min.js" type="text/javascript"></script>
<script src="/web/static/js/main.js" type="text/javascript"></script>

因为你把它们当作 text/html,里面的变量没有被识别,函数和其他 javascript 对象也是如此。因此你会得到各种未定义的行为。

补充说明,发生错误并不一定是因为您遗漏了 text/javascript。如果您查看 here,似乎 type 属性并不是完全必要的。您出错的原因是您明确声明了 text/html,因此将以这种方式处理文件。