0

そのため、送信時にメールを送信する連絡先フィールドがあります。完了時にjavascriptアラートが必要ですが、問題が返されます。

ジャバスクリプト:

jQuery(document).ready(function() {

    $.ajax({
        url: './contactengine.php',
        type: 'GET',
        dataType: 'JSON',
        success: function(response) {
                        alert("GOOD");
                },
        error: function() {
                        alert("BAD");
                }
    });

});

php:

<?php

$EmailFrom = "emailname@gmail.com";
$EmailTo = "emailto@gmail.com";
$Subject = "new contact from website";
$Name = Trim(stripslashes($_POST['Name'])); 
$company = Trim(stripslashes($_POST['company'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Message = Trim(stripslashes($_POST['Message'])); 

// validation
$validationOK=true;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  exit;
}

// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "company: ";
$Body .= $company;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page 
if ($success)
{
    $result = array('success' => true);
}
else
{
    $result = array('success' => false, 'message' => 'Something happened');
    header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
}
  echo json_encode($result);
?>

フォームを送信すると、次のようなページにリダイレクトされます。

{"success":true}

私が同じページにとどまり、ただ良い警告を発する必要があるとき。

4

3 に答える 3

2

ここでの問題はスクリプトにあると思います。あなたが説明した動作から、PHPが仕事をしているように聞こえます。

PHPコードに基づいてajax呼び出しにいくつかの修正を加えました。これを試して、役立つかどうかを確認してください。

$.ajax({
        url: 'contactengine.php', //removed ./ - that's wrong I think
        type: 'POST',  //you are accessing $_POST not $_GET in the PHP file
        data: $('myform').serialize(), //you need to send some data atleast
        dataType: 'JSON',
        success: function(response) {
                        alert("GOOD");
                },
        error: function() {
                        alert("BAD");
                }
    });

私が行ったことは./、あなたの URL の先頭から削除されています。これは/、ルート ディレクトリに対して、または../現在のディレクトリから 1 つ上のディレクトリに対して、何もない必要があります。ファイルがページと同じディレクトリにある場合は、私が行ったように保管してください。

型を GET から POST に変更しました。スクリプトで PHP $_POST グローバルにアクセスしているため、PHP は変数の間違った場所を探していたでしょう。

最後になりましたが、いくつか入力dataしました。PHP が期待する変数を渡す必要があるため、serialize()呼び出しを使用しました。フォームを対象とするように jQuery セレクターを置き換え、フォーム内のすべてを PHP に渡す必要があります。

jQuery ajax 関数の詳細については、http: //api.jquery.com/jQuery.ajax/を参照してください。

お役に立てれば

于 2012-04-20T23:00:58.483 に答える
0

ajax関数を呼び出すコードは、フォームのボタンにアタッチされていますか?ajax呼び出しの直後に、通常の非ajaxフォーム送信を行っているようです。ajaxリクエストを実行しているonsubmitまたはonclick関数を変更して、falseを返すようにしてみてください。これで、修正されるはずです。

于 2012-04-20T23:33:47.097 に答える
0

データはどこにありますか?

さらに、リクエスト タイプを GET として定義しましたが、それらを POST としても読み取ります。内部でこのようなデータを送信し、リクエスト タイプを post に変更します

   $.ajax({
        url: './contactengine.php',
        type: 'POST',
        data: { variable1: "value1", .... }
        dataType: 'JSON',
        success: function(response) {
                        alert("GOOD");
                },
        error: function() {
                        alert("BAD");
                }
    });
于 2012-04-20T22:54:03.433 に答える