简体   繁体   中英

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?

Here is the PHP file, the load function can successfully load, however, when I click the button "View the log", the above message occurs.

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:

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. 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):

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

into

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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