2017-01-19 17 views
0

私はAjaxを使用して連絡先フォームからEメールを送信しようとしています。parsererror SyntaxError:JSONの予期しない番号

メールが送信されると、確認メッセージ: 「お問い合わせありがとうございます」が返されます。ここで

{"type":"success","message":"thank you for contacting us"} parsererror SyntaxError: Unexpected number in JSON at position 8 
at JSON.parse (<anonymous>) 
at parseJSON (jquery.js:4) 
at On (jquery.js:6) 
at k (jquery.js:6) 
at XMLHttpRequest.r (jquery.js:6)` 

は私のPHPファイルは、メールを送信している:代わりにこのメッセージを私はエラーを持っているの表示

ここ

<?php 
require_once 'phpmailer/PHPMailerAutoload.php'; 

$okMessage = 'thank you for contacting us'; 


$name = @trim(stripslashes($_POST['name'])); 
$email = @trim(stripslashes($_POST['email'])); 
$subject = @trim(stripslashes($_POST['subject'])); 
$message = @trim(stripslashes($_POST['message'])); 
$societe = @trim(stripslashes($_POST['societe'])); 
$num = @trim(stripslashes($_POST['num'])); 

$body = 'Name: ' . $name . "\n\n" . 'Entreprise: ' . $societe . "\n\n" . 'contact Tel: ' . $num . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message; 

$mail = new PHPMailer(); 

$mail->IsSMTP(); 
$mail->Host = 'xxxxx'; 
$mail->Port = xx; // 
$mail->CharSet = 'UTF-8'; 
$mail->SMTPAuth = true; 
$mail->SMTPDebug = 2; 
$mail->Username = "xxxx"; 
$mail->Password = "xxxx"; 


$mail->setFrom('xxxx','xxxx'); 
$mail->addAddress('xxxx'); 
$mail->Subject = $subject; 
$mail->Body = $body; 
$mail->send(); 

header('Content-type: application/json'); 
$status = array(
'type' => 'success', 
'message' => $okMessage 
); 
echo json_encode($status); 
die; 

は私のJS関数です

var form = $('#main-contact-form'); 
form.submit(function(event){ 
    event.preventDefault(); 
    var form_status = $('<div class="form_status"></div>'); 

    var req = $.ajax({ 
       url: $(this).attr('action'), 
       type: "POST", 
       data: form.serialize(), 
       dataType : 'json', 
       beforeSend: function(){ 
        form.prepend(form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn()); 
       } 
    }); 

    req.done(function(data, textStatus, jqXHR){ 

     console.log(data, textStatus, jqXHR); 
     console.warn(jqXHR.responseText); 
     form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut(); 
    }); 

    req.fail(function(jqXHR, textStatus, errorThrown){ 
     console.log(jqXHR.responseText, textStatus, errorThrown); 
     console.warn(jqXHR.responseText); 
     form_status.html('<p class="text-error">' + textStatus + '</p>').delay(3000).fadeOut(); 
    }); 
}); 

ことができますあなたは私を助けてくれますか?

+1

[ネットワーク]タブの生の応答を見て、応答のJSON部分に何かがあるかどうかを確認してください。 – Barmar

+0

{"type": "success"、 "message": "お問い合わせありがとうございます"}これは私のネットワークタブにあるものです@Barmar –

+0

@AthMav何がポート文字列ですか? –

答えて

1

私はこの問題を解決しました。

私のブラウザのネットワークタブでは、応答がJsonだけではないことが分かりました。私はそれが実際に

$mail->SMTPDebug = 2; 

パラメータによって引き起こされたことに気づい

、それはJSONでのレスポンスを印刷する前に、私のサーバーとクライアント間の会話全体を返されました。 だから私は

$mail->SMTPDebug = 0; 

でそれを交換し、すべてのものは今okです。

ありがとうヘルプ

関連する問題