SyntaxError:期望表达式,得到')'

时间:2015-04-23 02:06:23

标签: javascript jquery

我已经被这个错误困住了几天,但仍然无法弄清楚出了什么问题。如果有人能指出我解决这个问题的正确方向,那就太棒了。

更新 当我评论" addMessages(xml)"我意识到错误消失了。在updateMsg()函数中。我如何使它工作呢?

错误: http://i.imgur.com/91HGTpl.png

代码:

$(document).ready(function () {
    var msg = $("#msg");
    var log = $("#log");
    var timestamp = 0;

    $("#name").focus();

    $("#login").click(function() {
        var name = $("#name").val();
        if (!name) {
            alert("Please enter a name!");
            return false;
        }

        var username = new RegExp('^[0-9a-zA-Z]+$');

        if (!username.test(name)){
            alert("Invalid user name! \n Please do not use the following characters \n `~!@#$^&*()=|{}':;',\\[\\].<>/?~@#");
            return false;
        }

        $.ajax({
            url: 'login.php',
            type: 'POST',
            dataType: 'json',
            data: {name: name},
            success: function() {
                $(".login").hide();
            }
        })
        return false;
    });

    $("#form").submit(function() {
        if (!msg.val()) {
            return false;
        }

        $.ajax({
            url: 'add_message.php',
            type: 'POST',
            dataType: 'json',
            data: {message: msg.val()},
        })

        msg.val("");

        return false

    });

    window.setInterval(function () {
        updateMsg();
    }, 300);

    function updateMsg() {
        $.post('server.php', {datasize: '1024'}, function(xml) {
            addMessages(xml);
        });
    }

    function addMessages(xml) {

        var json = eval('('+xml+')');

        $.each(json, function(i, v) {

            tt = parseInt(v.time);

               if (tt > timestamp) {
                console.log(v.message);
                appendLog($("<div/>").text('[' + v.username + ']' + v.message));
                timestamp = tt
            }
        });
    }

    function appendLog(msg) {
        var d = log[0]
        var doScroll = d.scrollTop == d.scrollHeight - d.clientHeight;
        msg.appendTo(log)
        if (doScroll) {
            d.scrollTop = d.scrollHeight - d.clientHeight;
        }
    }
});

4 个答案:

答案 0 :(得分:3)

这可能对read up on eval有所帮助。它看起来并不像你认为的那样。

  

eval()是一个危险的函数,它执行它以调用者的特权传递的代码。

另外

  

对于常见用例,eval()有更安全(更快!)的替代方案。

您尝试做的事情似乎是以JSON的形式从服务器获取数据。您需要确保您的服务器返回有效JSON的内容,您可以验证here。大多数服务器端编程语言都有一个库,它可以将一个对象变成JSON,从而使它变得轻而易举。 Here's an example for php

在客户端,您需要将$http更改为var json = eval('(' + xml + ')');这将为您提供php / perl / python / etc对象的javascript版本。如果它是一个数组,您可以使用var json = JSON.parse(xml);循环,for或来自不同库的各种函数(例如Array.prototype.forEach或{{1)来遍历它}}

答案 1 :(得分:1)

SyntaxError:expect expression,got&#39;)&#39;通常由

之类的东西引起
exeFunction(a,b,) 

查看表单提交函数ajax是否导致此类错误

$("#form").submit(function() {
    if (!msg.val()) {
        return false;
    }

    $.ajax({
        url: 'add_message.php',
        type: 'POST',
        dataType: 'json',
        data: {message: msg.val()},     <-------
    })

    msg.val("");

    return false

});

答案 2 :(得分:0)

如果要在单击时触发Java脚本或触发任何单击。有时缺少0会出现上述错误。

<a href="javascript:void(0);">delete</a>

答案 3 :(得分:-1)

JSON.stringify({datasize:&#39; 1024&#39;})可以做到吗?只是一个猜测