2013-02-06 70 views
-2

我想的onclick調用的函數,而是用json_encode參數是這樣的:呼叫與json_encode參數的JavaScript函數

<a href="#" onclick="javascript:table1Modif(<?php echo substr(json_encode($res['base']),1,-1); ?>);return false;"> 

而jQuery函數只是提醒參數:

<script> 
    function table1Modif(key){ 
     $('#table1').html(function() { 
      alert(key); 
     }); 

    } 
</script> 

但是我有一個「未定義」的錯誤! 我相信這是由於json_encode,但我不知道如何解決它。 謝謝!

+3

你在哪裏有一個未定義的錯誤?那個錯誤到底在說什麼? HTML和JavaScript的外觀是什麼?我們無法分辨PHP將會產生什麼。 – Quentin

+0

錯誤出現在控制檯中,並顯示「EAID_7F6C4CA4_984A_49e2_A138_73CEB37FDFF1」未定義,其中「EAID_7F6C4CA4_984A_49e2_A138_73CEB37FDFF1」是我想要在警報中顯示的結果。如果我調用 galmat

回答

2

它看起來像你傳遞一個字符串json_encode爲了生成一個JavaScript字符串文字(這是不是有效的JSON)。

您正在使用substr刪除此字符串中的引號。

JavaScript將因此看到一個標識符(在這種情況下,它將被視爲一個變量)。

您需要一個字符串文字,因此第一個要做的事情是刪除substr調用

這會產生一個新問題。您將字符串插入HTML文檔,但不能將其表示爲HTML。因此字符串文字開始處的"字符將被視爲屬性值的末尾,您不需要該字符。

將非HTML內容插入HTML文檔時,需要將其表示爲HTML。通過htmlspecialchars函數運行代碼來執行此操作。

onclick="table1Modif(<?php 
    echo htmlspecialchars(
     json_encode($res['base']) 
    ); 
?>);return false;" 

在意外的是,我刪除了完全沒用的javascript: label。你沒有循環到breakcontinue,所以它沒有做任何事情。當你處理它時,你應該用更明智的東西替換href="#"。遵循Progressive EnhancementUnobtrusive JavaScript的原則。

+1

我能說什麼。 .. 謝謝!!!! – galmat