简体   繁体   English

未捕获的SyntaxError:意外的令牌}

[英]Uncaught SyntaxError: Unexpected token }

I dont know what is happening, I have double checked my code in PHP and Javascript again and again, but are not able to find any additional }, which does not have a corresponding {, can anyone help me to take a look of the code? 我不知道发生了什么,我已经一次又一次地在PHP和Javascript中检查了我的代码,但是无法找到任何额外的},没有相应的{,任何人都可以帮我看看代码?

Here is the PHP file, the load function can successfully load, however, when I click the button "View the log", the above message occurs. 这是PHP文件,加载函数可以成功加载,但是,当我单击“查看日志”按钮时,会出现上面的消息。

function load($DB){
    $dbConnection = mysql_connect($DB['server'], $DB['loginName'], $DB['password']);
    if(!$dbConnection){
        die('Error! ' . mysql_error());
        }
    mysql_select_db($DB['database'], $dbConnection);
    $result = mysql_query("SELECT ClientName FROM Client");

    print "Sort by";
    print "<select id='option'>";
    print "<option value='3'>Tech</option>";
    print "<option value='4'>Client</option>";
    print "</select>";
    print "<input type='button' value='View the log' onclick='viewlog(document.getElementById('option').value)'/>";
    print "<br>";

    print "Tech Name checked in/out from";
    print "<select id='client'>";
    while($row = mysql_fetch_array($result)){
        print "<option value='".$row['ClientName']."'>".$row['ClientName']."</option>";
    }
    print "</select>";
    print "<input type='button' value='Display' onclick='display(document.getElementById('client').value)'/>";
    print "<br>";
    print "<button type='button' onclick='back.php?function=5'>Export the log to .csv</button>";
    print "<br>";
}

function viewlog($DB, $sort){
    print "<h1>repeat</h1>";
    $dbConnection = mysql_connect($DB['server'], $DB['loginName'], $DB['password']);
    if(!$dbConnection){
        die('Error! ' . mysql_error());
        }
    mysql_select_db($DB['database'], $dbConnection);
    $query = "SELECT * 
                FROM Tech AS T, Client AS C, Site AS S, Log AS L 
                WHERE T.TechID=L.TechID AND C.ClientID=L.ClientID AND S.SiteID=L.SiteID ";
    if($sort=="Tech")
        $query .= "ORDER BY T.TechName ASC, L.Time DESC";
    else if($sort=="Client")
        $query .= "ORDER BY C.ClientName ASC, L.Time DESC";
    $result = mysql_query($query) or die('Error! ' . mysql_error());; 
    print "Real-Time check in/check out<br>";
    print "<table><th><td>Tech</td><td>Client</td><td>Site</td>";
    print "<td>Date and Time</td><td>Type</td></th>";
    while($row = mysql_fetch_array($result)){
        print "<tr><td>".$row['TechName']."</td>";
        print "<td>".$row['ClientName']."</td>";
        print "<td>".$row['SiteName']."</td>";
        print "<td>".$row['Time']."</td>";
        print "<td>".$row['Type']."</td></tr>";
        }
    print "</table>";
}

function export($DB){
    $dbConnection = mysql_connect($DB['server'], $DB['loginName'], $DB['password']);
    if(!$dbConnection){
        die('Error! ' . mysql_error());
        }
    mysql_select_db($DB['database'], $dbConnection);
    $result = mysql_query("SELECT TechName, ClientName, SiteName, Time, Type
                            INTO OUTFILE 'result.csv'
                            FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED by '\"'
                            LINES TERMINATED BY '\n'
                            FROM Tech AS T, Client AS C, Site AS S, Log AS L
                            WHERE T.TechID=L.TechID AND C.ClientID=L.ClientID AND S.SiteID=L.SiteID
                            ORDER BY L.Time DESC");
    $Time = date('Y_m_d_H_i');
    $fileName = "Report_" + $Time;
    header('Content-type: text/csv'); 
    header('Content-Disposition: attachment; filename="'.$fileName.'.csv"'); 
    readfile('result.csv');
}

$function = $_GET['function'];
if($function==0)
    load($DB);
elseif($function==3)
    viewlog($DB, "Tech");
elseif($function==4)
    viewlog($DB, "Client");
elseif($function==5)
    export($DB);

Below is the Javascript code: 以下是Javascript代码:

function load(){
var xmlhttp;
if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
}else{ // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}               

xmlhttp.onreadystatechange = function(){
    //document.getElementById("action").innerHTML=xmlhttp.status;
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
        document.getElementById("action").innerHTML=xmlhttp.responseText;       
    }
}
var num = 0;
xmlhttp.open("GET","back.php?function="+num, true);
xmlhttp.send();
}

function viewlog(num){
var xmlhttp;
if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
}else{ // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}               

xmlhttp.onreadystatechange = function(){
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
        document.getElementById("View").innerHTML=xmlhttp.responseText;         
    }
}
xmlhttp.open("GET","back.php?function="+num, true);
xmlhttp.send();
}

I have tried to hide the viewlog function in js file, also for the content in viewlog function of PHP file also, but both actions still give out the same message, I really have no idea how to debug it. 我试图在js文件中隐藏viewlog函数,也是为了PHP文件的viewlog函数中的内容,但是这两个动作仍然发出相同的消息,我真的不知道如何调试它。 Can someone give me a hand? 有人可以帮我一把吗?

I think browsers will have trouble with you using the same quote for the attribute as for the javascript string (you do it in both, but Ill just put one example): 我认为浏览器在使用与javascript字符串相同的引用属性时会遇到问题(你在两者中都这样做,但我只是举了一个例子):

onclick='viewlog(document.getElementById('option').value)'

into

onclick='viewlog(document.getElementById(&quot;option&quot;).value)'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM