php - 多个 AJAX 调用 - 第一次获取数据并转换为 JSON 对象,第二次更新 $_SESSION 信息
问题描述
我有一个 ajax 调用,它从表中提取数据,然后转换为 JSON 对象
因为我也用 PHP 做了很多事情,所以我需要在第一次调用之后立即进行第二次 AJAX 调用,这将更新我尝试过的 $_SESSION 信息
$_SESSION['company_id'] = $_POST['companyid'];
在处理第一次 AJAX 调用的同一个文件中,但它不处理第一次调用的数据,因此我需要进行第二次调用
这是我的第一个和第二个 AJAX 查询的 jQuery 代码
$(".showcompinfo").click(function(){
$("#comptable").hide();
$("#showcomptable").show();
var id = $(this).attr('id');
$("#comp_info").toggle();
var companyid = id;
var dataString = "companyid="+companyid;
$.ajax({ /* THEN THE AJAX CALL */
type: "POST",
url: "../inc/dataforms/complist.php",
data: dataString,
success: function(result){
var jsonObject = JSON.parse(result);
// here you can do your magic
var approved = jsonObject.customer_approved;
$("#showcompname").text(jsonObject.name);
// Get Reg Address Details - Check if any field is empty
var regoffice_2 = '';
var regoffice_3 = '';
var regoffice_city = '';
console.log(jsonObject.regoffice_city);
if(jsonObject.regoffice_2)
{
regoffice_2 = ', ' + jsonObject.regoffice_2;
};
if(jsonObject.regoffice_3)
{
regoffice_3 = ', ' + jsonObject.regoffice_3;
};
if(jsonObject.regoffice_city)
{
var regoffice_city = ', ' + jsonObject.regoffice_city;
};
var addlne1 = jsonObject.regoffice_1;
var regaddress = jsonObject.regoffice_1 + regoffice_2 + regoffice_3 + regoffice_city;
$("#addline1").val(jsonObject.regoffice_1);
$("#addline2").val(jsonObject.regoffice_2);
$("#addline3").val(jsonObject.regoffice_3);
$("#addcity").val(jsonObject.regoffice_city);
$("#addcounty").val(jsonObject.regoffice_county);
$("#countryselected").val(jsonObject.regoffice_country);
$("#countryselected").text(jsonObject.regoffice_country);
$("#addpostcode").val(jsonObject.regoffice_postcode);
console.log(regaddress);
if(approved == '1')
{
$("#approvedcust").text('Yes');
} else {
$("#approvedcust").text('Customer but Not Approved');
};
}
});
// 2nd Ajax
var companyid2 = jsonObject.company_id;
var dataString2 = "companyid="+companyid2;
$.ajax({ /* THEN THE AJAX CALL */
type: "POST",
url: "../inc/updatesession.php",
data: dataString2,
success: function(){
}
});
//
这是 complist.php 的 PHP 代码
if(!empty($_POST['companyid']))
{
$companyid = $_POST['companyid'];
$query = mysqli_query($dbc,"SELECT * FROM `comp_companies` WHERE `company_id` = '$companyid'");
$result = mysqli_fetch_assoc($query);
if($result){
$newdata = json_encode($result);
}
}
print_r($newdata);
如果有人可以帮助甚至将其合并为 1 个 ajax 查询或帮助我让 2 个调用正常工作,将不胜感激
** 编辑 ** 好的我现在让它在会话变量中显示公司 ID 但是当用户单击以查看不同的公司信息结果时会话 company_id 没有更新我已将 complist.php 更改为以下
if(!empty($_POST['companyid']))
{
unset($_SESSION['company_id']);
$companyid = $_POST['companyid'];
$query = mysqli_query($dbc,"SELECT * FROM `comp_companies` WHERE `company_id` = '$companyid'");
$result = mysqli_fetch_assoc($query);
if($result){
$_SESSION['company_id'] = $_POST['companyid'];
$newdata = json_encode($result);
}
}
print_r($newdata);
我在上面的想法是,一旦进行了 ajax 调用,它会立即取消设置会话变量公司信息,然后一旦找到所选公司的结果,它会使用新值重置会话 var company_id,但是它不会更新会话变量
解决方案
您的代码成功更新了会话变量。但是,由于您正在进行 AJAX 调用,因此只有 AJAX 直接调用的 PHP 脚本中的代码(在本例中为“complist.php”)在服务器上执行。最初用于创建页面的 PHP 代码不再运行 - 这就是为什么您必须使用 JavaScript 来填充新选择的公司详细信息的其余部分。
要在 AJAX 调用之后更新屏幕上的 ID,您需要做的就是按照您用来更新其余字段的模式
更改您的 HTML,使包含公司 ID 的元素具有一个 ID,让 JavaScript 识别它:
<span id="showcompname"></span><span id="showcompid"><?php echo $_SESSION['company_id'];?></span>
然后在你的 AJAX 代码的“成功”回调中,写
$("#showcompid").text(jsonObject.company_id);
这与您获得的其他 JavaScript 代码的概念完全相同,例如更新“showcompname”元素。
同时,存储在您的 PHP 会话中的值将在您下次运行更新整个页面的 PHP 代码时使用(例如通过刷新页面)。
推荐阅读
- computer-science - 是否有数学证据表明语义错误检测系统设计是不可能设计的?
- php - 如何在ajax json中使用动态输入名称变量
- asterisk - 队列调用策略
- google-apps-script - 使用 GAS 图表设置条形边框颜色和权重
- excel - Excel VBA 用户表单组合框 - 加载多列值
- java - 单击具有相同名称的不同html类
- android - 在我发布的应用程序版本中,firebase recyclerview 出现错误
- java - 如何在游戏循环中绘制图形上下文?
- node.js - Mongo 集合或文档
- javascript - 在将 JavaScript 数组传递给我的 php 文件时需要帮助