2009-08-05 3 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 misreads вашу строку.

2

Если вы посмотрите на сгенерированный HTML, это будет выглядеть примерно так:

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

Есть некоторые цитаты отсутствуют Arround строки вы передаете в качестве параметра функции JS sendmails

Итак, я бы сказал, добавьте некоторые цитаты вокруг него; немного как это:

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

EDIT: добавлено больше вещей ...

Но, если $sendQuestion содержит кавычки, то достану тебе другую ошибку ... Так что это может быть полезно для

  • плохая идея: либо заменить те ' с \' с чем-то вроде str_replace
  • или «преобразовать» строку к действительный-JS один, с, например, json_encode

Второе решение поможет вам PHP код, как этот (обратите внимание, что json_encode добавляет двойные кавычки Arround строки ... так что становится все труднее врезать непосредственно в вызове функции ... так что давайте использовать переменную):

$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. –

1

Первое, что вы делаете неправильно, это опубликовать код PHP, когда сообщение об ошибке сообщается вашим движком JavaScript.

Для его отладки JavaScript важен. Мы можем догадаться, что может выглядеть JS, но гораздо проще, если мы сможем увидеть JS для начала.

В этом случае наиболее вероятным объяснением является то, что вы хотите написать некоторый JS, который содержит строковый литерал, но вы не окружаете аргумент JS кавычками.

0

Подумайте о PHP как о шаблоне двигателя. Попробуйте следующее:

?> 
<input 
    type="button" 
    value="Send mails" 
    onClick="sendmails('<?php echo $sendQuestion; ?>');"> 
<?php 
Смежные вопросы