Javascript 未捕获的语法错误:意外标记)“;,

Javascript 未捕获的语法错误:意外标记)“;,,javascript,Javascript,我知道有人问过一个类似的问题,但对我来说没有任何帮助 我正在开发Cordova应用程序。我在应用程序上运行了一系列测试,使用我的系统浏览器(IE和Mozilla),一切(导航、Web服务调用)都可以正常工作 现在使用Eclipse,从Emulator,我尝试登录到应用程序(身份验证应该调用Web服务),但什么也没发生 在检查LogCat时,我看到一个异常: 未捕获的语法错误:意外标记“”,来源:File:///android_asset/www/login.html 以下是.js脚本部分: $(

我知道有人问过一个类似的问题,但对我来说没有任何帮助

我正在开发Cordova应用程序。我在应用程序上运行了一系列测试,使用我的系统浏览器(IE和Mozilla),一切(导航、Web服务调用)都可以正常工作

现在使用Eclipse,从Emulator,我尝试登录到应用程序(身份验证应该调用Web服务),但什么也没发生

在检查LogCat时,我看到一个异常:

未捕获的语法错误:意外标记“”,来源:File:///android_asset/www/login.html

以下是.js脚本部分:

$(document).on('click', '#S_IN', function() {
  if (($('#username').val() == "") || ($('#password').val() == "")) {
    alert("All fields are required.");
  } else {
    $.ajax({
      type: "POST",
      data: JSON.stringify({
        "username": $('#username').val(),
        "password": $('#password').val()
      }),
      url: "http://127.0.0.1/appName/Service.asmx/Authenticate",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(data) {
        if (JSON.parse(data.d).toLowerCase() == 'success') {
          $.mobile.changePage('main.html');
        } else {
          alert("Login failed. Invalid Username or Password combination.");
        }
      },

      error: function(xhr, status, error) {
        var err = eval("(" + xhr.responseText + ")");
        alert(err.Message);
      }
    });
  }
});
//..............................Login End........................// 

请问我做错了什么?我卡住了。

Imaxo,你的代码风格不太好,你需要做以下几件事:

  • 加载DOM/窗口后处理数据
  • 声明变量
  • 不要将事件附加到文档(键盘事件除外 (无格式射击)
  • 在提交请求之前准备好数据
  • 下面是一个小例子:

    firstFile.js

    var app = app || {};
    
    app.auth = (function(){
    
        return {
            initialize: function(){
                //declare variable
                //this.variable = global for this object
                //var some; = local for this method
            },
            validate: function(){
                //validate data
            },
            send: function(){
               //send AJAX request
            }
            //other methods
        }
    
    })();  
    
    secondFile.js

    var app = app || {};
    $(function(){
        app.auth.initialize();
    });
    
    这揭示了模块模式和基本模块组织模式,但最好看看require.js


    在回答你的问题时,你在代码中的某个地方写了多余的“)”

    应该可以看到
    xhr.responseText
    中的内容,而且,我不确定你是否想首先使用
    eval
    。这就是JSON的用途(假设
    xhr.responseText
    是一个字符串化对象)。那么您的响应是一个JSON对象,其属性值是JSON编码的字符串?真的吗?您确定这是唯一的JS吗?响应文本是什么样子的(evil eval,btw)?正如@Pointy所指出的,错误可能来自
    JSON.parse
    。检查
    data.d