2009-08-05 4 views
0

Ich habe diesen Fehler in meinem Code ..Fehler arugument durch eine Funktion

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

i Art von Gefühl, dumm Posting diese Frage vorbei. Aber ich bin nicht in der Lage herauszufinden, was in diesem Code falsch ist

Dieser Code ist in PHP geschrieben. es funktioniert gut ist, ich alle Argumente in der Sendmails Funktion übergeben nicht, aber wenn ich arugment passieren gibt es Fehler wie:

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

Können einige mir sagen, was ich falsch m hier?

Beste Zeeshan

Antwort

2

ein Angebot um es hinzufügen:

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

ohne Anführungszeichen, JavaScript Zeichenfolge missversteht.

2

Wenn Sie einen Blick auf die generierten HTML-nehmen, wird es in etwa so aussehen:

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

Es gibt einige Zitate rund um die Zeichenfolge fehlt Ihnen als Parameter an die Funktion JS vorbei sind sendmails

Also, ich würde sagen, fügen Sie einige Zitate um ihn herum; ein bisschen wie folgt aus:

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

EDIT: hinzugefügt mehr stuff ...

Aber wenn $sendQuestion Anführungszeichen enthält, es wird Ihnen eine andere Fehlermeldung erhalten ... So könnte es zu

sehr nützlich sein,
  • schlechte Idee: entweder solche ' mit \' mit so etwas wie str_replace
  • oder „transformieren“ die Zeichenfolge ein ersetzen valid-JS ein, mit zum Beispiel json_encode

Die zweite Lösung erhalten Sie einen PHP-Code wie diese erhalten (beachten Sie, dass json_encode doppelte Anführungszeichen rund um die Zeichenfolge hinzufügt ... so wird es schwieriger zu einbetten direkt in der Anruffunktion ... also lassen Sie uns eine Variable verwenden):

$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)\">"; 

Und das erzeugte HTML sein wird:

<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)"> 

Welche viel mehr schön ist :-)
Vielleicht noch nicht perfekt ... Aber jetzt, ich glaube, Sie erhalten den Punkt ;-)

Als Nebenbemerkung: json_encode existiert erst seit PHP 5.2 ... so könnte man Ich möchte die Version von PHP überprüfen, die Sie verwenden ...

+1

+1 für die Erwähnung der Möglichkeit von $ sendQuestion enthält Anführungszeichen. Es ist tatsächlich ein potenzielles XSS-Loch. –

1

Das erste, was Sie falsch machen, ist PHP-Code zu veröffentlichen, wenn der Fehler von Ihrer JavaScript-Engine gemeldet wird.

Um es zu debuggen, ist das JavaScript wichtig. Wir können raten, wie der JS aussehen könnte, aber es ist viel einfacher, wenn wir sehen können, mit dem JS zu beginnen.

In diesem Fall ist die wahrscheinlichste Erklärung, dass Sie einige JS schreiben möchten, die ein Zeichenfolgenliteral enthalten - aber Sie umgeben das JS-Argument nicht mit Anführungszeichen.

0

Denken Sie an PHP als Templating-Engine. Versuchen Sie Folgendes:

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