Ошибка при передаче аргумента через функцию. - PullRequest
0 голосов
/ 06 августа 2009

У меня ошибка в моем коде ..

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

Я чувствую себя глупо, когда пишу этот вопрос. Но я не могу понять, что не так в этом коде

Этот код написан на php. это работает нормально, если я не передаю аргументы в функции sendmails, но когда я передаю аргумент, выдается ошибка:

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

Ответы [ 4 ]

2 голосов
/ 06 августа 2009

Если вы посмотрите на сгенерированный 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, которую вы используете ...

2 голосов
/ 06 августа 2009

Добавьте цитату:

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

Без кавычек javascript неправильно читает вашу строку.

1 голос
/ 06 августа 2009

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

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

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

0 голосов
/ 06 августа 2009

Думайте о PHP как о шаблонизаторе. Попробуйте это:

?>
<input
  type="button"
  value="Send mails"
  onClick="sendmails('<?php echo $sendQuestion; ?>');">
<?php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...