【问题标题】:PHP get data from AJAX post and filter itPHP 从 AJAX 帖子中获取数据并过滤它
【发布时间】:2018-04-25 10:14:10
【问题描述】:

我有一个我想与服务器通信的表单抛出一个 AJAX 帖子。 我所做的查询说这是查询错误,但我没有看到问题。我尝试了不同的 AJAX 代码,但似乎帖子有效,因为它通过了 if($_POST)。

$('#submit').click(function(e) {

    var url = "handler/dForm.php"; // the script where you handle the form input.

    $.ajax({
           type: "POST",
           url: url,
           contentType: 'application/json; charset=utf-8',
           data: $("#idForm").serialize(), // serializes the form's elements.
           success: function(data)
           {
               console.log(data); // show response from the php script.
           },
           error: function(xhr,textStatus,err)
            {
                console.log("readyState: " + xhr.readyState);
                console.log("responseText: "+ xhr.responseText);
                console.log("status: " + xhr.status);
                console.log("text status: " + textStatus);
                console.log("error: " + err);
           }                    
         });

    e.preventDefault(); // avoid to execute the actual submit of the form.
});

服务器部分

require_once 'connect.php';
$name = isset($_POST['name']) ? $_POST['name'] : '';
$subject = isset($_POST['Subject']) ? $_POST['Subject'] : '';
$message = isset($_POST['Message']) ? $_POST['Message'] : '';
$email = isset($_POST['Email']) ? $_POST['Email'] : '';

if (isset($_POST)) {

 $email = $DBcon->real_escape_string($email);
 $message = $DBcon->real_escape_string($message);
 $subject = $DBcon->real_escape_string($subject);
 $name = $DBcon->real_escape_string($name);

 $query = "INSERT INTO customer(name,messaje,subject,email) VALUES('$name','$message','$subject','$email')";

  if ($DBcon->query($query)) {
   $msg = "<div class='alert alert-success'>
      <span class='glyphicon glyphicon-info-sign'></span> &nbsp; successfully registered !
     </div>";
  }else {
   $msg = "<div class='alert alert-danger'>
      <span class='glyphicon glyphicon-info-sign'></span> &nbsp; error while registering !
     </div>";
  }
 echo  $msg;


 $DBcon->close();
}else{
    echo "err";
}

HTML 表单:

<form id="idForm">
                        <input type="text" class="col-md-6 col-xs-12 name" name='name' placeholder='Nume *'/>
                        <input type="text" class="col-md-6 col-xs-12 Email" name='Email' placeholder='Email *'/>
                        <input type="text" class="col-md-12 col-xs-12 Subject" name='Subject' placeholder='Subiect'/>
                        <textarea type="text" class="col-md-12 col-xs-12 Message" name='Message' placeholder='Mesaj *'></textarea>
                        <div class="cBtn col-xs-12">
                            <ul>
                                <li class="clear"><a href="javascript:void(0)"><i class="fa fa-times"></i>Sterge campurile</a></li>
                                <li class="send"><a href="javascript:void(0)" id="submit"><i class="fa fa-share"></i>Trimite</a>
                                </li>
                            </ul>
                        </div>
                    </form>

【问题讨论】:

  • 您收到的确切错误是什么?如果不知道错误是什么,将很难提供帮助。
  • 你是说你的代码在最底部的else语句中执行echo "err";?返回 '​​err' 到前端
  • 如果你把它改成$msg = "Error description: " . mysqli_error($DBcon);,你会得到什么?
  • 您可以显示表单的 html 吗?
  • 您可以尝试从您的 ajax 中删除 contentType: 'application/json; charset=utf-8', 吗?

标签: php jquery mysql ajax post


【解决方案1】:

我看到的第一个问题是if (isset($_POST)) 它始终是TRUE。您必须检查是否设置了特定字段,即。 if (isset($_POST['name'])).

第二个是那一行: $query = "INSERT INTO customer(name,messaje,subject,email) VALUES('$name','$message','$subject','$email')";

我认为您打错了 message 列。你有消息。

如果query() 返回 FALSE,请使用echo $DBcon-&gt;error; 作为调试提示。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2016-10-04
  • 1970-01-01
相关资源
最近更新 更多