【问题标题】:Transfer form data from ajax to php将表单数据从ajax传输到php
【发布时间】:2014-03-06 14:54:28
【问题描述】:

如何将表单数据从 ajax 传输到 php? 但不是通过 POST(在 URL 中的意思)。

patient_anlegen.php

    <form id="form_patienten_anlegen" name="form_patienten_anlegen">
    <table class="table_patienten_anlegen">
      <tr>
        <td>Anrede:</td>
        <td>
            <select id="termin_anrede" name="termin_anrede">
                <option value=0>Bitte auswählen</option>
                <option value="Frau">Frau</option>
                <option value="Herr">Herr</option>
            </select>
        </td>
      </tr>
      <tr>
        <td>Vorname:</td>
        <td><input type="text" size="30" name="termin_vorname" id="termin_vorname" ><div class="error" id="termin_vornamefehler"></div></td>
      </tr>
      <tr>
        <td>Nachname:</td>
        <td><input type="text" size="30" name="termin_nachname" id="termin_nachname"><div class="error" id="termin_nachnamefehler"></div></td>
      </tr>
</form>

我的病人.js

$(document).on('click', '#submit_patienten_anlegen', function() {
    alert("Test");          
    $.ajax({url: 'func/patienten.php',
        data: $('#form_patienten_anlegen').serialize(),
        parameters: { 
                action: 'patienten_anlegen'
        },
        type: 'post',                  
        beforeSend: function() {

        },
        complete: function() {

        },
        success: function (result) {
            var response = JSON.parse(result);

            if(response.status) {
                alert(response.status);

            } else {
                alert(response.message);
            }
        },
        error: function (request,error) {              
            alert('Fehler!');
        }
    });                          
});

我的耐心.php

<?php

if($_GET["action"] == "patienten_anlegen"
{
    $output = array('status' => "patienten_anlegen", 'message' => "OKAY");
}

echo json_encode($output);
?>

它不起作用:(

但我不明白为什么! 我使用了 firefox 调试器,但我什么也没看到。

【问题讨论】:

    标签: javascript php ajax forms


    【解决方案1】:

    您在 Ajax 调用中指定为 type: 'post',
    但在 PHP 中使用 $_GET if($_GET["action"]

    将 Type 更改为 type: 'get',我希望你的表单中有一个名为 action 的字段。

    【讨论】:

    • 好的,谢谢!你的意思是:“
      ”?如果我将类型更改为 get 它将不起作用:(
    • 不,我的意思是你正在使用 $_GET["action"]。它需要一个名为“action”的表单字段你在字段中有一个名为action的字段吗?
    • 或者你有一个按钮吗?我在这里看不到按钮的代码,您如何单击并提交表单。
    • 表格中有一个按钮,像这样:"" Ohhh,好吧,你是说这个,还是? ""
    • 如果我点击提交,此网址将显示在地址栏中:“localhost/patientenverwaltung/…
    【解决方案2】:

    POST 不是通过 URL 查询字符串。 GET 是通过查询字符串。

    在您的 php 代码中,您应该使用 $_POST 而不是 $_GET

    此外,数据将以"name" =&gt; "value" 的形式发布,其中名称是您输入字段的“名称”字段。

    所以$_POST['termin_anrede'] 将包含您选择框的值。

    编辑:尝试将 Patient.js 的前两行更改为此。

    $(document).on('click', '#submit_patienten_anlegen', function(e) {
        e.preventDefault();
        alert("Test");
    

    编辑 2:这是我用来产生工作结果的完整 html。如果您打开浏览器的控制台,您将看到控制台输出。

    <!DOCTYPE html>
    <html>
      <head>
        <script src="https://code.jquery.com/jquery.js"></script>
      </head>
      <body>
        <form id="form_patienten_anlegen" name="form_patienten_anlegen">
          <table class="table_patienten_anlegen">
            <tr>
              <td>Anrede:</td>
              <td>
                  <select id="termin_anrede" name="termin_anrede">
                      <option value=0>Bitte auswählen</option>
                      <option value="Frau">Frau</option>
                      <option value="Herr">Herr</option>
                  </select>
              </td>
            </tr>
            <tr>
              <td>Vorname:</td>
              <td><input type="text" size="30" name="termin_vorname" id="termin_vorname" ><div class="error" id="termin_vornamefehler"></div></td>
            </tr>
            <tr>
              <td>Nachname:</td>
              <td><input type="text" size="30" name="termin_nachname" id="termin_nachname"><div class="error" id="termin_nachnamefehler"></div></td>
            </tr>
          </table>
          <button id="submit_patienten_anlegen">Submit</button>
        </form>
    
        <script>
          $(document).on('click', '#submit_patienten_anlegen', function(e) {
              e.preventDefault();
              alert("Test");          
              $.ajax({url: 'func/patienten.php',
                  data: $('#form_patienten_anlegen').serialize(),
                  parameters: { 
                          action: 'patienten_anlegen'
                  },
                  type: 'post',                  
                  beforeSend: function() {
    
                  },
                  complete: function() {
    
                  },
                  success: function (result) {
                      var response = JSON.parse(result);
    
                      console.log(response);
                  },
                  error: function (request,error) {              
                      alert('Fehler!');
                  }
              });                          
          });
        </script>
      </body>
    </html>
    

    这里是patienten.php

    <?php
      echo json_encode($_POST);
    ?>
    

    如您所见,php 页面已将发布数据接收到 $_POST 数组中,您可以在其中访问表单字段的值,如下所示:

    • 选择框:$_POST['termin_anrede']
    • 第一个输入:$_POST['termin_vorname']
    • 第二个输入:$_POST['termin_nachname'];

    如您所见,这些对应于每个选择/输入字段的name="" 属性。

    我仍然不确定您要使用$_GET["action"] 访问什么,但希望您可以使用/修改此处的代码来实现您的需要。如果您需要更多帮助,请发表评论。

    【讨论】:

    • 我已经将ajax类型改为post,但是浏览器中的地址栏显示:“localhost/patientenverwaltung/…”!我不明白:(
    • @user3140252 ajax 请求不应更改地址栏中的地址。我编辑了我的评论以添加一些代码 - 试试看是否会阻止它发生。
    • 我没有收到警报! :(
    • 非常非常感谢!我可以再问你一个(最后一个)问题吗? :)
    • @user3140252 继续!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多