如何将表单数据从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调试器,但我没有看到任何内容。
答案 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
数组,您可以在其中访问表单字段的值,如下所示:
如您所见,这些对应于每个选择/输入字段的name=""
属性。
我仍然不确定您尝试使用$_GET["action"]
访问了什么,但希望您可以在此处使用/修改代码以实现您的需求。如果您需要更多帮助,请发表评论。