php
  • syntax-error
  • 2014-02-18 41 views 0 likes 
    0

    我想弄清楚一小時以來的錯誤,但我無法找到我的錯誤! 任何人都可以告訴我爲什麼我不斷收到Uncaught SyntaxError: Unexpected token }錯誤?未捕獲的SyntaxError:意外的代幣}

    這裏是我的PHP:

    echo "<p style='color: orange; font-size: 25px;'>{$result['Topic']} - <button type='button' onclick='window.location.href='resources.php?subj={$result['Subject']}'' class='btn btn-sm btn-success pull-right'>Resources</button>&nbsp;<button onclick='window.location.href='questions.php?subj={$result['Subject']}'' class='btn btn-sm btn-success pull-right' style='margin-right: 10px;'>Questions</button> <button onclick='window.location.href='assessment.php?topic={$result['Topic']}'' class='btn btn-sm btn-success pull-right' style='margin-right: 10px;'>Assessment</button></p><hr/>"; 
    

    請幫助。 :(

    +0

    你確定錯誤是在這條線? – Bryan

    +0

    是的............ –

    +0

    順便說一句,即使你修復你的PHP錯誤,這將永遠不會像這樣工作。與JavaScript,將有太多的錯誤,因爲你的' – CodeBird

    回答

    1

    你的問題是這些傢伙$result['Topic']}''試着這麼做:

    $topic = $result['Topic']; 
    

    ,然後在你的代碼中使用它topic=$topic

    0

    我增加了一些逃脫了雙引號,嘗試運行以下命令:

    echo "<p style='color: orange; font-size: 25px;'>{$result['Topic']} - 
    <button type='button' onclick='window.location.href=\"resources.php?subj={$result['Subject']}\"' 
    class='btn btn-sm btn-success pull-right'>Resources</button>&nbsp;<button onclick='window.location.href=\"questions.php?subj={$result['Subject']}\"' 
    class='btn btn-sm btn-success pull-right' style='margin-right: 10px;'>Questions</button> 
    <button onclick='window.location.href=\"assessment.php?topic={$result['Topic']}\"' class='btn btn-sm btn-success pull-right' 
    style='margin-right: 10px;'>Assessment</button></p><hr/>"; 
    
    0

    請嘗試像這樣

    echo '<p style="color: orange; font-size: 25px;">'.$result['Topic'].' - 
    
        <button type="button" 
        onclick="window.location.href=\'resources.php?subj='.$result['Subject'].'\'" 
        class="btn btn-sm btn-success pull-right">Resources</button>&nbsp; 
    
        <button 
        onclick="window.location.href=\'questions.php?subj='.$result['Subject'].'\'" 
        class="btn btn-sm btn-success pull-right" style="margin-right: 10px;">Questions</button> 
    
        <button 
        onclick="window.location.href=\'assessment.php?topic='.$result['Topic'].'\'" 
        class="btn btn-sm btn-success pull-right" style="margin-right: 10px;">Assessment</button></p><hr/>'; 
    
    0

    如上所述,您嵌套了單引號,並且使HTML語法複雜化以避免使用引號。如果你輸出這麼多的HTML,heredoc總是有幫助的。如果你的編輯器和我一樣聰明,它會給你塊內的HTML語法突出顯示!

    echo <<< HTML 
    <p style="color: orange; font-size: 25px;"> 
        $result[Topic] - 
        <button type="button" onclick="window.location.href='resources.php?subj=$result[Subject]'" class="btn btn-sm btn-success pull-right"> 
         Resources 
        </button> 
        &nbsp; 
        <button onclick="window.location.href='questions.php?subj=$result[Subject]'" class="btn btn-sm btn-success pull-right" style="margin-right: 10px;"> 
         Questions 
        </button> 
        &nbsp; 
        <button onclick="window.location.href='assessment.php?topic=$result[Topic]'" class="btn btn-sm btn-success pull-right" style="margin-right: 10px;"> 
         Assessment 
        </button> 
    </p> 
    <hr/> 
    
    HTML; 
    
    2

    有未逃脫,即使你逃脫,目前導致你錯誤的雙引號,因爲使用的是單引號的屬性和JavaScript字符串呈現的HTML標記仍會有錯誤幾個報價在他們裏面。這樣你的JS可能不會工作。例如:

    <button onclick='window.location.href='resources.php?subj=%s''>…</button> 
    

    實際上,您的代碼是一個很好的例子,爲什麼應該避免在字符串中使用變量。每次我需要在PHP中使用雙引號時,我都會覺得我做錯了什麼。也許模板引擎對你很有用。最簡單的版本是使用sprintf輸出那種字符串:

    $template = <<<EOTEMPLATE 
        <p style="color: orange; font-size: 25px;">%s - 
         <button type="button" onclick="window.location.href=\'resources.php?subj=%s\'" class="btn btn-sm btn-success pull-right">Resources</button> 
         <button onclick="window.location.href='questions.php?subj=%s'" class="btn btn-sm btn-success pull-right">Questions</button> 
         <button onclick="window.location.href='assessment.php?topic=%s'" class="btn btn-sm btn-success pull-right">Assessment</button> 
        </p> 
        <hr/> 
    EOTEMPLATE; 
    
    echo sprintf($template, $result['Topic'], $result['Subject'], $result['Subject'], $result['Topic']); 
    

    下一個優化迭代將刪除這些內嵌JS代碼片段並將其粘貼在一個單一的JS塊(甚至更好:一個單獨的* .js文件)。但是因爲您只加載另一頁,所以簡單的鏈接也可以。以下片段也應該做你的輸入建議。 (作爲一個鏈接也可以樣式看起來像一個按鈕)。

    $template = <<<EOTEMPLATE 
        <p class="btn-group">%s – 
         <a href="resources.php?subj=%s" class="btn btn-sm btn-success pull-right">Resources</a> 
         <a href="questions.php?subj=%s" class="btn btn-sm btn-success pull-right">Questions</a> 
         <a href="assessment.php?topic=%s" class="btn btn-sm btn-success pull-right">Assessment</a> 
        </p> 
        <hr/> 
    EOTEMPLATE; 
    
    echo sprintf($template, $result['Topic'], $result['Subject'], $result['Subject'], $result['Topic']); 
    

    然後,如果你仍然需要JavaScript的(例如,以實現對這些按鈕的點擊跟蹤),你可以添加一個事件處理程序,這樣做:

    (這個js例如只會在因爲"classList"使用的現代瀏覽器的工作)

    相關問題