2009-08-05 36 views
0

我有我的代碼此錯誤..錯誤順便arugument通過函數

echo "<input type='button' value='send mails' onclick=\"sendmails(".$sendQuestion.")\">"; 

我有點覺得自己很蠢張貼了這個問題。但我無法弄清楚這個代碼有什麼問題

這段代碼是用php編寫的。它工作正常,是我不傳遞任何參數的sendmails功能,但是當我通過arugment提示錯誤爲:

missing) after argument list 
    sendmails(Type your Question here testin to post from chrome) 

一些能告訴我,我做什麼錯了嗎?

最佳 Zeeshan

回答

2

添加報價周圍:

echo "<input type='button' value='send mails' onclick=\"sendmails('".$sendQuestion."')\">"; 

不帶引號,JavaScript的誤讀您的字符串。

2

如果你看一看生成的HTML,它會是這個樣子:

<input type='button' value='send mails' onclick="sendmails(Type your Question here testin to post from chrome)"> 

有一些報價失蹤角落找尋你傳遞作爲參數傳遞給JS的函數的字符串sendmails

所以,我會說繞它添加一些引號;有點像這樣:

echo "<input type='button' value='send mails' onclick=\"sendmails('".$sendQuestion."')\">"; 

編輯:添加更多的東西...

但是,如果$sendQuestion包含引號,它會給你另一個錯誤......因此,它可能是有用的,以

  • 壞主意:要麼\'的東西代替那些'str_replace
  • 或「改造」的字符串到有效-JS之一,舉例來說,json_encode

第二個解決方案將讓你像這樣的一個PHP代碼(注意:json_encode加雙引號角落找尋串...所以它嵌入變得更難直接在函數調用...所以,讓我們用一個變量)

$sendQuestion = "Type your Question' here testin to post from chrome"; 
$json = json_encode($sendQuestion); 

echo '<script type="text/javascript">' . "\n"; 
echo 'var myString = ' . $json . ';' . "\n"; 
echo '</script>' . "\n"; 
echo "<input type='button' value='send mails' onclick=\"sendmails(myString)\">"; 

和生成的HTML將是:

<script type="text/javascript"> 
var myString = "Type your Question' here testin to post from chrome"; 
</script> 
<input type='button' value='send mails' onclick="sendmails(myString)"> 

哪是更漂亮:-)
也許不是很完美。但是,現在,我想你明白了吧;-)

一點題外話:json_encode只存在,因爲PHP 5.2 ...所以你可能想檢查您使用的PHP版本...

+1

+1提到包含引號的$ sendQuestion的可能性。這實際上是一個潛在的XSS漏洞。 – 2009-08-05 21:49:10

1

您錯誤的第一件事是在您的JavaScript引擎報告錯誤時發佈一些PHP代碼。

要調試它,JavaScript很重要。我們可以猜測JS可能的樣子,但如果我們能夠看到JS開頭的話,它會容易得多。

在這種情況下,最可能的解釋是您要編寫一些JS中包含字符串文字的JS - 但是您並沒有用引號括起JS參數。

0

將PHP視爲模板引擎。試試這個:

?> 
<input 
    type="button" 
    value="Send mails" 
    onClick="sendmails('<?php echo $sendQuestion; ?>');"> 
<?php