Json jQuery和php没有处理价值的正确性

时间:2014-11-19 10:40:53

标签: javascript php jquery html json

我有:Html + jQuery + ajax帖子和PHP文件来处理表单值并返回错误(true或false)和带有html标记的消息。

我的javascript代码:

$(document).ready(function() {
  var form = $('#form'); // contact form
  var submit = $('#submit');  // submit button
  var alert = $('.alert'); // alert div for show alert message

  // form submit event
  form.on('submit', function(e) {
    e.preventDefault(); // prevent default form submit

    $.ajax({
      url: 'contact.php', // form action url
      type: 'post', // form submit method get/post
      dataType: 'json', // request type html/json/xml
      data: form.serialize(), // serialize form data
      beforeSend: function() {
        alert.fadeOut();
        submit.html('Sending....'); // change submit button text
      },
    success: function(result) {
        if(result.error){
            /* On error stuff */
            alert(result.html).fadeIn();
        }else{
            /* On success stuff */
            alert(result.html).fadeIn();
        }
    }
    });
  });
});

最后我的php:

if( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) ){
$result = array("error" => false, "html" => null);
$vars = array('name', 'email','telefoonnummer', 'message');
$verified = TRUE;
foreach($vars as $v) {
   if(!isset($_POST[$v]) || empty($_POST[$v])) {
      $verified = FALSE;
   }
}      

if(!$verified) {


$result["error"] = true;
$result["html"] = "<b>Error11</b>";
    echo json_encode($result);
    exit;
}    

$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$tel= filter_var($_POST['telefoonnummer'], FILTER_SANITIZE_STRING);
$message = filter_var($_POST['message'], FILTER_SANITIZE_STRING);

    $to = '';
$sent = email($to, $email, $name, $tel, $message);
if ($sent) {
$result["error"] = false;
$result["html"] = "<b>Success</b>";
    echo json_encode($result);
} else {
$result["error"] = true;
$result["html"] = "<b>Error</b>";
    echo json_encode($result);
    }

  return;
}

/**
 * Email send with headers
 *
 * @return bool | void
 **/
function email($to, $name, $email, $tel, $message){
  $header = array();
  $header[] = "MIME-Version: 1.0";
  $header[] = "From: <".$name."> <".$email.">";

  /* Set message content type HTML*/
  $header[] = "Content-type:text/html; charset=iso-8859-1";
  $header[] = "Content-Transfer-Encoding: 7bit";
  if( mail($to, $tel, $message, implode("\r\n", $header)) ) return true;
}

好了..现在很明显我知道错误返回时出现了问题,它确实显示然后再次出现在我的HTML中,所以我不知道到底发生了什么...... < / p>

我不想要&#34;修复&#34;只是这样我可以复制粘贴代码,但解释发生了什么,出了什么问题以及如何解决它(至少我学到了一点)

2 个答案:

答案 0 :(得分:1)

您正以两种不同的方式使用alert ...一次作为对象,一次作为函数。后者可能是导致不良后果的原因。仔细查看alert;

之后的括号
  • alert()是一个功能
  • alert.表示它是一个对象

答案 1 :(得分:1)

我们不能在警报功能中使用jquery链接方法。