0

所以我有一个联系人字段,在提交时会发送一封电子邮件,我希望在完成时收到 javascript 警报但正在返回问题。

的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 的前面删除 -对于根目录或从当前目录开始的一个目录,./它应该什么都不是。如果该文件与您的页面位于同一目录中,请像我所做的那样保留它。/../

我已将类型从 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

数据在哪里?

另外,您将请求类型定义为 GET,但也将它们读取为 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 回答
0

Is your code that is calling the ajax function attached to a button on a form? It sounds like you are doing a regular non-ajax form submit right after the ajax call. You can try changing the onsubmit or onclick function that is running the ajax request to return false, and I think that should fix it.

于 2012-04-20T23:33:47.097 回答