unerwartetes token Fehler beim Aufruf einer Funktion in einen callback
auf den Anruf wieder nach dem ajax-Aufruf in qm150_submit $.post ....
Ich will, nennen eine zweite Funktion, die aufgerufen wird 'send_email' (das hat auch einen callback namens 'success_callback'
Ich eine Fehlermeldung, hier
function () {send_email(fromName,fromEmail,toEmail,subject,message,success_callback) };
Fehler: Uncaught SyntaxError: Unexpected token )
hier ist der code :
function qm150_submit($title, $name, $email, $description, $send_email) {
$.post('<?PHP print API_SUBMIT; ?>', { "title": $title, "name": $name, "email": $email, "description": $description },
function (data) { //callback function after API_SUBMIT
//Send email with a link to their collection
if ($send_email) {
//parameters for the send_email() ajax function
var subject = "subject";
var collection_id = data.collection_id; //data is json returned from the ajax above
var toEmail = $email
var message = "<?PHP print SHARE_COLLECTION;?>"+collection_id;
var fromEmail = "<?PHP print EMAIL_FROM_EMAIL; ?>";
var fromName = "<?PHP print EMAIL_FROM_NAME; ?>";
var success_callback = function (results) {
alert('send_email has returned with: '+results);
};
alert('I am now calling the send_email');
function () {send_email(fromName,fromEmail,toEmail,subject,message,success_callback) };
}
});
//missing a curly bracket ? no! note double indentation of the anonymous function (data) is a continuation of first statement
}
edit: und der code für die send_email()
function send_email(fromName,fromEmail,toEmail,subject,message,success_callback) {
alert('send_email called');
$.ajax({
type: 'post',
url: '<?PHP print API_SHARE_EMAIL;?>',
data: 'fromName=' + fromName + '&fromEmail=' + fromEmail + '&toEmail=' + toEmail + '&subject=' + subject + '&message=' + message,
dataType:'json',
success: success_callback
});
alert('send_email finished');
return true;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unerwartetes token ist die
(
nachfunction
.Zuerst von allen, du bist der Deklaration einer anonymen Funktion, ohne jemals aufgerufen wird. Zweitens, eine anonyme Funktion Erklärung kann nicht durch eine Anweisung (oder in anderen Worten, eine function-Anweisung muss einen Namen haben), das ist der Grund, warum die
(
unerwartete (javascript erwartet eine Funktion name, nicht Klammern).Rufen Sie einfach
send_email
direkt... Es ist ja schon innerhalb einer Funktion, so wird es nicht "verschmutzen" das Globale Objekt (es gibt nichts zu verschmutzen es mit sowieso) - sehe ich keine Notwendigkeit für eine anonyme Funktion:Uncaught TypeError: Property 'send_email' of object [object DOMWindow] is not a function
beginne ich eine neue Frage, wenn, es sei denn, Sie oder jemand hat einige schnelle Beratung$send_email
, nichtsend_email
? Wäre das nicht sicher wissen, ohne zu sehen, mehr von deinem code.window
was der browser bedeutet, dass durchDOMWindow
) genanntsend_email
, die nicht eine Funktion. Sie können das überschreiben der Funktion an anderer Stelle im Skript - zum Beispiel durch die Zuweisung an eine variable noch nicht deklariert (send_email = true;
eher alsvar send_email = true;
)Wenn Sie überprüfen Sie Ihren code mit JSLint Sie diese Fehlermeldung erhalten:
Müssen Sie wrap der anonymen Funktion wie diese:
(function{})();
Fixed-code:
Oder entfernen Sie einfach, dass die anonyme Funktion, die nichts tut: