我将当前文件中的变量通过POST
或初始化,GET
例如:
if (isset($_GET['email']) && preg_match('/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/', $_GET['email'])) {
$email = $_GET['email'];
}
if (isset($email)) {
SELECT * FROM usuarios WHERE email=?
//...
}
现在通过记录的用户会话
if (isset($_SESSION["id_username"])) {
if (!filter_var($_SESSION["id_username"] ?: '', FILTER_VALIDATE_INT) === false) {
$id_username = $_SESSION["id_username"] ?: '';
}
}
现在可以全局打印用户数据
$Username->bind_result($email,$nombres,$ciudad //.... );
我有所有这些数据,在我使用的应用程序中ajax
,我只想能够添加input
必要的字段和不需要的字段,以便能够直接从代码发送该信息ajax
而无需创建input
隐藏字段,因为每个formulario
人都有一个id
标识,ajax
它只适用于那个表格var frm = $('#resetform');
。
那么如何在不需要创建输入字段的情况下发送该信息呢?例如<input type="hidden" name="email" value="<?php echo $email;?>">
这个值$email;
可以直接用 ajax 代码、一些参数发送,我发明var $email
并因此发送该信息。
$(function() {
var frm = $('#resetform');
frm.submit(function(e){
e.preventDefault();
var formData = frm.serialize();
formData += '&' + $('#submit_btn').attr('name') + '=' + $('#submit_btn').attr('value');
var url = "update.php";
$.ajax({
type: frm.attr('method'),
url: url,
data: formData,
})
.done(function(data) {
let res = JSON.parse(data);
if(res.status){
$('#message').fadeIn();
$('#message').html(res.message).delay(3000).fadeOut(3000);
$(frm).hide();
setTimeout(function(){
location.href = 'index.php';
},2000);
} else {
$('#message').fadeIn();
$('#message').html(res.message).delay(3000).fadeOut(3000);
}
})
.fail(function() {
$('#message').fadeIn();
$('#message').html(textStatus).delay(2000).fadeOut(2000);
})
});
});
已编辑
我认为您可以使用new FormData(),您可以在其中存储表单字段的所有数据并添加新值而无需添加隐藏字段,我将参考您需要的代码部分. 例子:
如果您注意formData变量,它将存储您的所有表单#resetform并且在初始化它之后您可以添加单独的值,例如使用append向数组推送,我希望这个答案对您有所帮助。
$_COOKIE 的另一种方式
正如我告诉你的,另一种无需将 php 与 js 混合使用的方法是从 php 创建 cookie 并从 js 读取它:
PHP
会话使用 cookie 作为一种键,以关联存储在服务器端的数据。在服务器上,当您创建会话或 cookie 时,会在该服务器上创建一个文件,当您需要从该 cookie 或会话中读取值时,它会从该文件中读取它,会话和 cookie 使用同一个文件来存储值网络访问者的服务器内。也就是说,您可以安全地使用 cookie 来存储值,就好像它们是会话一样。现在的想法是像这样读取js中的值:
需要检索值并通过 ajax 发送时的示例
我们只创建一个空表单,没有任何字段
然后我们捕获提交事件,并添加我们需要的具有必要值的字段
如果我设法很好地理解了您的问题,那么我的解决方案如下。您不想在表单中有额外的输入字段,如此完美,将您要发送的数据与 ajax jquery 混合。我真的不知道将数据转发到用户不修改的服务器有什么意义,但是嘿,这是你的解决方案,你会知道你在做什么。我会以多种方式做到这一点,这是一种:
代码:
我建议您创建一个通用运输代码,如下所示:
通过 AJAX 发送的通用函数:
现在想象这是您的表单字段:
您只需为要使用 AJAX 发送更多额外内容的所有表单创建以下点击事件:
应用设计模式并概括您的代码总是好的。希望这可以帮到你。干杯!
没有必要通过AJAX捕获数据发送它,据我所知它已经存在于$_SESSION中,因此您已经说过服务器端的数据,没有必要,从您所说的只发送特定数据您可以像这样执行 AJAX 请求:
$.ajax({ type: frm.attr('method'), url: url, data: { key:value, key2:value2 }, // ajax 代码在这里... });
好吧,自发布以来已经过去了几年,但我相信,像我一样,将来会有其他人有这个疑问。
如果您确定您创建的会话变量在整个系统中得到了很好的传播,那么解决方案就是更新 session_start,由于某种原因,当通过 Ajax 访问 php 脚本时,您认为它们是会话变量那里但它们不可访问或请求找不到它们,它所要做的就是这样的: