PHP echo语句不起作用

时间:2016-10-28 10:54:26

标签: php forms

我有以下表格处理php脚本。

 .submenu:hover >.submenu-wrap {
   height:auto;
 }
.submenu:hover >.submenu-wrap> ul.submenu-1 {
  padding-top: 15px;
  padding-bottom: 30px;
 }
.submenu:hover >.submenu-wrap> ul.submenu-1 li a {
    padding-top: 20px;
    padding-bottom: 20px;
 }

表单正在使用以下JavaScript提交    

<?php
$G['hotel_email']="xxxx@xxxx.com";
$G['hotel_name']="xxx xxx";
$G['language']="en";
$T['lbl_form_sent_successfully']="H";


# Recipients: comma separated
$G['form_contact_mail_recipients'] = $G['hotel_email'];
$G['form_contact_mail_subject'] = $G['hotel_name'] . ' - Contact Weddings [' . $G['language'] . ']';


# CHECK IF FORM SENT. AJAX. RESPONSE IN JAVASCRIPT TO INTERACT IN THE FORM.
if (!empty($_POST)) {
    $js = '';

     # ALTERNATIVE CAPTCHA, IT MUST NOT BE FILLED
     if (!empty($_POST['title'])) { exit; }


     # FORM MAIL TO SENT
     unset($_POST['title']);
     unset($_POST['submit']);
     $message = date("l, F j, Y, g:i a")." [GMT] \n\nFORM DETAILS\n\n\n";
     foreach ($_POST as $field => $value) { 
        $message .= ucfirst(str_replace('_',' ',$field)).': '.$value."\n\n";
     }
     $message .= "\n\n\n";
     mail($G['form_contact_mail_recipients'], $G['form_contact_mail_subject'], $message, "From: ".$_POST['email']."\r\n");
     echo "success";
}
?>

最后一个echo语句不起作用,我没有收到任何错误消息。我确实收到所有信息的电子邮件。我认为在邮件功能之后没有任何工作,我尝试了var_dump,但是没有。这可能是什么错误?

2 个答案:

答案 0 :(得分:1)

根据你的ajax请求,你在ajax请求中没有使用success方法,你需要添加成功方法:

$("#video-js-player-container").hide();

此处jQuery.ajax({ url: YourURL, type: "POST", data: jQuery("#ba-form-contact form").serialize(), dataType: "html", success: function(response) { alert(response); //this will return the response }, beforeSend: function() { // loading if you need before ajax success } }); return false; 将返回成功消息。

答案 1 :(得分:1)

您不知道echo不起作用。

知道的是脚本执行,而 jQuery 函数不会发出输出。这就是问题的一半。

jQuery.ajax({
    type: 'POST',
    url: '<?=$_SERVER['REQUEST_URI']?>',
    data: jQuery("#ba-form-contact form").serialize(),
    dataType: 'html'
 });

上面没有对输出做任何事情,所以从逻辑上来说没有任何反应。

试试这个:

jQuery.post({
    '<?=$_SERVER['REQUEST_URI']?>',
    jQuery("#ba-form-contact form").serialize()
 }).done(function(retval) {
     // Debug (better use console.log actually)
     alert(JSON.stringify(retval));
     // Do what you want with retval.message (check retval.status also)
     alert(retval.message);
 });

并且在PHP中,必须输出别的,以:

结束
 header('Content-Type: application/json');
 die(json_encode(array(
     'status' => 'success',
     'message' => 'The mail was sent',
 )));

(我已经从HTML更改为JSON输出,因为这样可以发送更多结构化数据,而且额外的复杂性可以忽略不计)。