2012-09-03 45 views
0

我在PHP中預先編寫的代碼,其中的JavaScript函數被調用傳遞多個參數中的JavaScript功能

echo "<a href='javascript:submittemplate(".$temprow['templateid'].");'>".$temprow["templatename"]."</a></td>"; 

和腳本是:

<script> 
     function submittemplate(templateid) 
     { 

      window.document.location.href = 'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid='+templateid; 

     } 
</script> 

現在我想通過一個更多參數在這個函數中。
我所做的是這樣的:

echo "<a href='javascript:submittemplate(".$temprow['templateid'].",".$mode.");'>".$temprow["templatename"]."</a></td>"; 


<script> 
function submittemplate(templateid,mode) 
{ 
alert("anything"); 
    window.document.location.href = 'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid='+templateid; 

} 
</script> 

後來的代碼不能正常工作。 我在做什麼錯?

+0

定義 「不工作」。 「不起作用」的症狀是什麼? – deceze

+0

這兩個參數都是數字嗎?因爲如果他們不是,那麼這將構建一些無效的JavaScript。 – temporalslide

+0

'mode'的可能值是多少? – timidboy

回答

1

如果mode變量是string這將引發一個錯誤。

例如alert(myString Is Here) // throw error

應該alert("myString Is Here");

,所以你必須添加報價是這樣的:

echo "<a href='javascript:submittemplate(".$temprow['templateid'].",\"".$mode."\");'>" 

注意\"

+0

試過,也沒有工作。 – Nagri

+0

所以這是什麼錯誤?,請按f12 – amd

+0

謝謝你幫助 – Nagri

0

你需要使用周圍參數

...submittemplate(\"".$temprow['templateid']."\");'>". 

逃脫雙引號,因爲你傳遞字符串

+0

前代碼正在工作。 – Nagri

1

我猜你正在生產,因爲無效的JavaScript語法你正在輸出的值。打開瀏覽器的Javascript控制檯來調試您的Javascript並查看任何錯誤。

向PHP輸出PHP值時,應確保它們不會破壞語法。要做到這一點,最好的方法是對它們進行JSON編碼,因爲JSON是真實的Javascript。正如你也應該在HTML HTML編碼您的值:

<a href="javascript:submittemplate(<?php echo htmlspecialchars(json_encode($temprow['templateid']), ENT_COMPAT); ?>, <?php echo htmlspecialchars(json_encode($mode), ENT_COMPAT); ?>);"><?php echo htmlspecialchars($temprow["templatename"]); ?></a></td> 

因爲這是一個非常不可讀的一行,你應該考慮使用JavaScript onclick事件綁定到該鏈接,不要使用href="javascript:"目標。見http://en.wikipedia.org/wiki/Unobtrusive_Javascript#Separation_of_behavior_from_markup

+0

感謝幫助:) – Nagri

1
  1. 不要使用JavaScript:協議,使用的onclick並返回false
  2. 爲什麼使用JavaScript在所有???
<a href="'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid=<?PHP echo $temprow['templateid']; ?>">.....