javascript - Ajax Post 请求不起作用?

标签 javascript php jquery ajax

我正在尝试构建一个表单,用户在其中填写信息并单击提交。点击后,页面永远不会刷新。表单处理和数据处理将在用户点击后发生。

我正在尝试使用 jQuery 和 Ajax 来完成此任务,到目前为止,这就是我所拥有的:

HTML

<form class="article_information_form" action="" method="POST"> 
  <label>Title </label> 
  <input type="text" name="articleTitle"> <br> 
  <label>Article URL: </label> 
  <input type="text" name="articleUrl"> <br>
  <p>Number of pages</p>
  <select name="numPages">
    <option value="" selected></option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
  </select>
  <br>
  <?php echo $message;?> //For Debugging
  <input type="submit" name="article_info_btn" value="Submit">
</form>

PHP

if (isset($_POST["articleTitle"], $_POST["articleUrl"], $_POST["numPages"])) {
    $message = "Success!"; //For debugging
}

Ajax

$(document).on('submit', '.article_information_form', function(e) {
    e.preventDefault();
  $.ajax({
    type : 'POST', 
    url  : '', 
    success :  function(data) {
        alert("Success!"); 
    } 
  }) 
})

单击提交按钮后,将显示成功窗口弹出警报。 不过,$message 变量永远不会打印出“成功!”这意味着它不处理 PHP $_POST

如何让 Ajax 将信息发送到 PHP $_POST

最佳答案

$( ".article_information_form" ).on( "submit", function( event ) {
  event.preventDefault();
  $.post(window.location , $( this ).serialize() , function(result){
        alert(result);
    });
});

您没有附加数据负载!!

由于您希望整个内容都在一个页面上,因此这将是一种可能的方式:

完整代码,易于理解:

<?php
//exececuted only if POST request as in the ajax below.
if($_SERVER[ 'REQUEST_METHOD']==='POST' ){
    //your processing here
    header( 'Content-Type: application/json');
    //lets set the receivedToServer property to what data we got
    $data = array();
    $data['receivedToServer'] = $_POST;
    //output data as json
    echo json_encode($data);
    //kill the page once the data is displayed
    die(); 
} 
?>
<!DOCTYPE html>
<html>
<head>
    <title>TEST</title>
</head>
<body>
    <form class="article_information_form" action="" method="POST">
        <label>Title </label>
        <input type="text" name="articleTitle">
        <br>
        <label>Article URL: </label>
        <input type="text" name="articleUrl">
        <br>
        <p>Number of pages</p>
        <select name="numPages">
            <option value="" selected></option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>
            <option value="7">7</option>
            <option value="8">8</option>
            <option value="9">9</option>
            <option value="10">10</option>
            <option value="11">11</option>
            <option value="12">12</option>
            <option value="13">13</option>
            <option value="14">14</option>
            <option value="15">15</option>
        </select>
        <br>
        <input type="submit" name="article_info_btn" value="Submit">
    </form>
</body>
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script>
    $('.article_information_form').on('submit', function(e) {
        e.preventDefault();
        $.ajax({
            type: 'POST',
            url: '',
            data: $(this).serialize(),
            success: function(data) {
                //the processed data available as data variable. 
                //lets log the data received at server property we set before
                console.log(data.receivedToServer);
                alert(data.receivedToServer.articleTitle);
            }
        });
    })
</script>

</html>

关于javascript - Ajax Post 请求不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38168225/

相关文章:

javascript - 了解为什么 JavaScript 中的回调函数仅在一切完成时执行

jquery - Jqgrid列标题和数据未对齐

javascript - notificationclick 事件服务 worker

javascript - 如何减少 Chosen Javascript Autocomplete 中的最大建议数量?

php - 如何在 php 中获取 # 之后的 URL anchor 部分

PHP/GD 使用 imagecreatetruecolor() 而不是 imagecreate() 呈现黑色图像

php - SQL 查询语法错误?

django - 如何自动从服务器获取新数据?

javascript - 如何仅更改 html 表格中最小单元格的颜色

javascript - 在响应函数中调用await