2017-08-11 4 views
-2

Ich versuche zu senden Trigger eine E-Mail, wenn ein Benutzer ein Webformular abschließt.500 Fehler beim Versuch, PHP-Funktion über AJAX aufrufen

jedoch den folgenden Fehler erhalte ich

enter image description here

Freuen uns über jede Beratung, wie diese Fehler zu beheben.

JS-Datei, die die PHP-Funktion

$(function() { 
    $('.error').hide(); 
    $(".request_demo").click(function() { 

    // validate and process form here 
    $('.error').hide(); 
    var email = $("#email").val(); 
    if (email == "") { 
    $("#email_error").show(); 
    $("#email").focus(); 
    return false; 
    } 

    var email = $("#email").val(); 

    var dataString = '<p><strong>Email: </strong> ' + email + '</p>'; 
    $.ajax({ 
    type: "POST", 
    url: "/script/send.php", 
    data: { data: dataString, senderAddress: email }, 
    success: function() { 
    // show a success message to your visitors 
    // clear input field values 

    $("#email").val('');  
    } 
    }); 
    return false; 
}); 
}); 

PHP-Datei

<?php 
    if(isset($_POST)){ 

    $postData = $_POST; 
    $mailgun = sendMailgun($postData); 

    if($mailgun) { 
    echo "Great success."; 
    } else { 
     echo "Mailgun did not connect properly."; 
    } 
} 

function sendMailgun($data) { 

    $api_key = 'xxxxxxx1234'; 
    $api_domain = 'our_domain'; 
    $send_to = '[email protected]'; 

    // sumbission data 
    $ipaddress = $_SERVER['REMOTE_ADDR']; 
    $date = date('d/m/Y'); 
    $time = date('H:i:s'); 

    // form data 
    $postcontent = $data['data']; 
    $reply = $data['senderAddress']; 

    $messageBody = "<p>You have received a new message from the contact form on your website.</p> 
     {$postcontent} 
      <p>This message was sent from the IP Address: {$ipaddress} on {$date} at {$time}</p>"; 

    $config = array(); 
    $config['api_key'] = $api_key; 
    $config['api_url'] = 'https://api.mailgun.net/v2/'.$api_domain.'/messages'; 

    $message = array(); 
    $message['from'] = $reply; 
    $message['to'] = $send_to; 
    $message['h:Reply-To'] = $reply; 
    $message['subject'] = "New Message from your Mailgun Contact Form"; 
    $message['html'] = $messageBody; 

    $curl = curl_init(); 

    curl_setopt($curl, CURLOPT_URL, $config['api_url']); 
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($curl, CURLOPT_USERPWD, "api:{$config['api_key']}"); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_POSTFIELDS,$message); 

    $result = curl_exec($curl); 
    curl_close($curl); 
    return $result; 
} 
?> 
+4

Bitte überprüfen Sie das PHP-Fehlerprotokoll auf Ihrem Server. – DarthJDG

+0

bieten vollständige URL in AJAX – GYaN

+0

Was passiert, wenn Sie die PHP-Datei über den Browser selbst besuchen? Erhalten Sie auch dort den Fehler 500? –

Antwort

1

nennen bin ich nicht sicher, ob dies Ihr Problem lösen wird oder nicht, aber das kann Ihnen helfen.

  1. Bitte überprüfen, was DATA TYPE wird der Server erwartet. In deiner Ajax-Anfrage hast du keinen Content-Type erwähnt. Da es sich um eine POST-Anfrage handelt, betrachtet jQuery Formulardaten als Standard-Inhaltstyp. Wie ich sehen kann, stellen Sie ein JS-Objekt als Daten bereit, das standardmäßig in eine Abfragezeichenfolge konvertiert wird, bevor die Anfrage an den Server gesendet wird.

  2. Wenn Ihr Server eine Json-Nutzlast in der Anforderung erwartet, müssen Sie die JSON.stringify() - Nutzlast ausführen, um das JS-Objekt in ein JSON-Objekt zu konvertieren. dh. Daten: JSON.stringify ({data: dataString, senderAddress: email})

Verwandte Themen