2017-10-12 60 views
1

在我的模板視圖文件中有如下代碼:任何腳本忽略未定義的變量?

<script> 
    // When the document is ready 
    $(function() { 
     var treedata = <?php (($treedata=="" ? "":$treedata)); ?>; 
     $('#treeview').treeview({data: treedata}); 
    });       
</script> 

,但我不使用這個樹視圖中的每一頁,所以每當沒有treedata被髮送的輸出會是這樣

A PHP Error was encountered 
Severity: Notice 
Message: Undefined variable: treedata 
Filename: views/admin.php 
Line Number: 355 

哪有當控制器沒有發送treedata時,我會保留空白嗎?

+0

如果使用框架? – Sand

+0

是的,使用codeigniter。 – mei

+0

使用isset()函數 – GYaN

回答

1

此處有多個選項。我的首選立場通常是設計你的代碼,以便你永遠不會有未定義的變量。在沒有該代碼結構,你可以確保它的設置:

$treedata = isset($treedata) ? $treedata : ""; 

或者,你可以考慮完全禁用通知警告。你如何做到這一點的情況有關,但你可以嘗試這樣的:

ini_set('error_reporting', E_ALL & ~E_NOTICE); 

此外,你是否也有Javascript錯誤時$treenode是空的?我相信當$treenode爲空時,您的Javascript行變成:

var treedata = ; 

這是一個錯誤。建議您用PHP包裝報價:

var treedata = <?php (($treedata=="" ? '""':$treedata)); ?>; 
+0

但是,如果包裝引號返回相同的錯誤如上。 – mei

1

您應該使用isset()函數來檢查變量存在。 所以,你應該更換:

$treedata=="" 

isset($treedata) 

isset()函數 - 確定一個變量設置,而不是空

2

你可以使用這種方法。

var treedata = <?php echo isset($treedata) ? '"'.$treedata.'"' : "''" ; ?>; 
  • 回波來顯示結果。
  • isset()來確定是否存在變量
  • 包裝結果以避免在JavaScript中使用ReferenceError: a is not defined
+0

但是現在我得到了這個錯誤信息: TypeError:$(...)。treeview不是函數 – mei

+0

當你的var treedata爲空時,你遇到了錯誤嗎?如果是這樣,你應該添加if語句var treedata到它的條件。也許它是導致錯誤的原因。 – Miggy