jquery联系表单php问题

时间:2012-04-20 22:50:02

标签: php javascript jquery

所以我有一个联系人字段,在提交时发送电子邮件,我希望在完成后提供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}

当我应该停留在同一页面上时,只是提醒你。

3 个答案:

答案 0 :(得分: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");
                }
    });

我已完成的操作已从您网址的前面删除./ - 它应该是空的,/用于根目录,或../用于一个目录。当前目录。如果文件与您的页面位于同一目录中,请保持原样。

我已经将类型从GET更改为POST - 您正在访问脚本中的PHP $ _POST全局,因此PHP一直在寻找变量的错误位置。

最后但并非最不重要的是,我已经放入了一些data。您需要传递PHP期望的那些变量 - 所以我使用了serialize()调用。替换jQuery选择器,使其以您的表单为目标,并将表单中的所有内容传递给PHP。

有关jQuery ajax函数的更多详细信息,请参阅此处:http://api.jquery.com/jQuery.ajax/

希望这有帮助

答案 1 :(得分:0)

数据在哪里?

Plus您将请求类型定义为GET,但也将其作为POST读取。在里面发送这样的数据,并将请求类型更改为发布

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

答案 2 :(得分:0)

调用ajax函数的代码是否附加到表单上的按钮?听起来你在ajax调用之后正在做一个常规的非ajax表单提交。您可以尝试更改运行ajax请求的onsubmit或onclick函数返回false,我认为应该修复它。