如何在 PHP 文件中检查以表单形式提交并通过 AJAX 调用发送的值
How to check for a value, that was submitted in a form and sends through AJAX call, in PHP file
我想在我的 php 文件中为放入组 #3 的用户执行 INSERT
查询。我知道使用 PHP 可以检查是否按下了按钮或是否设置了某些东西,但是如何使用 AJAX 检查发送和传递的值?
所以,假设我将组级别更改为 3(组级别通过表单中的值选项确定)。如何让我的查询检查是否选择了选项?
表格
<div class="change_group_button">
<a class="change_group" href="javascript:void(0)">Change User
Permission</a>
</div><br>
<div id="light" class="change_group_popup">
<a class="close" href="javascript:void(0)">Close</a>
<div class="group_success" style="color: red;"></div><br>
<form id="update_group" action="" method="POST" accept-charset="utf-8">
<div class="field">
<label for="group">Group</label>
<input type="hidden" value="<?php echo $approved_id; ?>" id="approved_id" name="id" />
<input type="hidden" value="<?php echo $approved_firstname; ?>" id="approved_firstname" name="firstname" />
<input type="hidden" value="<?php echo $approved_lastname; ?>" id="approved_lastname" name="lastname" />
<input type="hidden" value="<?php echo $approved_username; ?>" id="approved_username" name="username" />
<input type="hidden" value="<?php echo $approved_email; ?>" id="approved_email" name="email" />
<select id='group_id' name='group' required>
<option value=''><?php echo htmlentities($group); ?></option>
<option value="1">Bench</option>
<option value="2">Spectator</option>
<option value="3">Team Member</option>
<option value="4">Commissioner</option>
</select>
</div>
<input type="submit" value="submit" name="group">
</form>
AJAX 通话
$('#update_group').on('submit', function (event) {
event.preventDefault();
$.ajax({
url: 'user_group_update.php',
type: 'POST',
data: {
id: $("#approved_id").val(), //id
firstname: $("#approved_firstname").val(), //firstname
lastname: $("#approved_lastname").val(), //lastname
username: $("#approved_username").val(), //username
email: $("#approved_email").val(), //email
// update_group: $("#group_id").val() //group level
update_group: $(this).find( "#group_id option:selected" ).val()
},
success: function (data) {
//do something with the data that got returned
$(".group_success").fadeIn();
$(".group_success").show();
$('.group_success').html('User Permission Level Changed!');
$('.group_success').delay(5000).fadeOut(400);
alert(data);
},
error: function(jqXHR, textStatus,errorThrown )
{
// alert on an http error
alert( textStatus + errorThrown );
}
});
return false;
});
在我的 PHP 文件中,我从表单中获取这些字段..
$approved_id = $_POST['id'];
//test - delete if it doesn't work
$approved_firstname = $_POST['firstname'];
$approved_lastname = $_POST['lastname'];
$approved_username = $_POST['username'];
$approved_email = $_POST['email'];
$change_group = $_POST['update_group'];
您可以简单地检查您的脚本是否被 POST 编辑并确保 POST 不为空以确保它包含如下数据:
if ( $_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST) ) {}
Javascript 框架,例如 jQuery,发送一个带有 POST 请求的特殊 header AJAX - 所以你可以这样做:
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// your code
}
一些编程框架,如CodeIgniter,有自己的功能,使它更容易:
$this->input->is_ajax_request();
记住它可以被欺骗。
在收到 POST 的 PHP 文件中,您可以进行值检查:
$approved_id = $_POST['id'];
if($approved_id == '3')
{
//do something
}
else
{
//do something else
}
//test - delete if it doesn't work
$approved_firstname = $_POST['firstname'];
$approved_lastname = $_POST['lastname'];
$approved_username = $_POST['username'];
$approved_email = $_POST['email'];
$change_group = $_POST['update_group'];
如果您想保护您的 ajax 通话。生成令牌并在控制器中匹配该令牌。这些在每个框架中都可用。
如果您想在自定义 PHP 中执行此操作,那么您应该在页面加载中创建会话并在 post 请求中匹配此会话。
我想在我的 php 文件中为放入组 #3 的用户执行 INSERT
查询。我知道使用 PHP 可以检查是否按下了按钮或是否设置了某些东西,但是如何使用 AJAX 检查发送和传递的值?
所以,假设我将组级别更改为 3(组级别通过表单中的值选项确定)。如何让我的查询检查是否选择了选项?
表格
<div class="change_group_button">
<a class="change_group" href="javascript:void(0)">Change User
Permission</a>
</div><br>
<div id="light" class="change_group_popup">
<a class="close" href="javascript:void(0)">Close</a>
<div class="group_success" style="color: red;"></div><br>
<form id="update_group" action="" method="POST" accept-charset="utf-8">
<div class="field">
<label for="group">Group</label>
<input type="hidden" value="<?php echo $approved_id; ?>" id="approved_id" name="id" />
<input type="hidden" value="<?php echo $approved_firstname; ?>" id="approved_firstname" name="firstname" />
<input type="hidden" value="<?php echo $approved_lastname; ?>" id="approved_lastname" name="lastname" />
<input type="hidden" value="<?php echo $approved_username; ?>" id="approved_username" name="username" />
<input type="hidden" value="<?php echo $approved_email; ?>" id="approved_email" name="email" />
<select id='group_id' name='group' required>
<option value=''><?php echo htmlentities($group); ?></option>
<option value="1">Bench</option>
<option value="2">Spectator</option>
<option value="3">Team Member</option>
<option value="4">Commissioner</option>
</select>
</div>
<input type="submit" value="submit" name="group">
</form>
AJAX 通话
$('#update_group').on('submit', function (event) {
event.preventDefault();
$.ajax({
url: 'user_group_update.php',
type: 'POST',
data: {
id: $("#approved_id").val(), //id
firstname: $("#approved_firstname").val(), //firstname
lastname: $("#approved_lastname").val(), //lastname
username: $("#approved_username").val(), //username
email: $("#approved_email").val(), //email
// update_group: $("#group_id").val() //group level
update_group: $(this).find( "#group_id option:selected" ).val()
},
success: function (data) {
//do something with the data that got returned
$(".group_success").fadeIn();
$(".group_success").show();
$('.group_success').html('User Permission Level Changed!');
$('.group_success').delay(5000).fadeOut(400);
alert(data);
},
error: function(jqXHR, textStatus,errorThrown )
{
// alert on an http error
alert( textStatus + errorThrown );
}
});
return false;
});
在我的 PHP 文件中,我从表单中获取这些字段..
$approved_id = $_POST['id'];
//test - delete if it doesn't work
$approved_firstname = $_POST['firstname'];
$approved_lastname = $_POST['lastname'];
$approved_username = $_POST['username'];
$approved_email = $_POST['email'];
$change_group = $_POST['update_group'];
您可以简单地检查您的脚本是否被 POST 编辑并确保 POST 不为空以确保它包含如下数据:
if ( $_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST) ) {}
Javascript 框架,例如 jQuery,发送一个带有 POST 请求的特殊 header AJAX - 所以你可以这样做:
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// your code
}
一些编程框架,如CodeIgniter,有自己的功能,使它更容易:
$this->input->is_ajax_request();
记住它可以被欺骗。
在收到 POST 的 PHP 文件中,您可以进行值检查:
$approved_id = $_POST['id'];
if($approved_id == '3')
{
//do something
}
else
{
//do something else
}
//test - delete if it doesn't work
$approved_firstname = $_POST['firstname'];
$approved_lastname = $_POST['lastname'];
$approved_username = $_POST['username'];
$approved_email = $_POST['email'];
$change_group = $_POST['update_group'];
如果您想保护您的 ajax 通话。生成令牌并在控制器中匹配该令牌。这些在每个框架中都可用。 如果您想在自定义 PHP 中执行此操作,那么您应该在页面加载中创建会话并在 post 请求中匹配此会话。