将表单数据从ajax传输到php

时间:2014-02-09 09:40:43

标签: javascript php ajax html-form

如何将表单数据从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!');
        }
    });                          
});

我的patienten.php

<?php

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

echo json_encode($output);
?>

不起作用:(

但我不明白为什么! 我使用了firefox调试器,但我没有看到任何内容。

2 个答案:

答案 0 :(得分:0)

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

将类型更改为键入:'get',我希望您的表单中有一个名为action的字段。

答案 1 :(得分:0)

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

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

此外,数据将发布为"name" => "value",其中name是输入字段的“名称”字段。

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

编辑:尝试将您患者的前两行更改为此。

$(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"]访问了什么,但希望您可以在此处使用/修改代码以实现您的需求。如果您需要更多帮助,请发表评论。