我有一个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,但是不会更新会话变量
答案 0 :(得分:1)
您的代码成功更新了会话变量。但是,由于要进行AJAX调用,因此仅在服务器上执行由AJAX直接调用的PHP脚本中的代码(在这种情况下为“ complist.php”)。最初用于创建页面的PHP代码均不会再次运行-这就是为什么必须使用JavaScript填充其余新选择的公司详细信息的原因。
要在AJAX调用后更新屏幕上的ID,您需要做的就是遵循用于更新其余字段的模式
更改您的HTML,以便包含公司ID的元素具有可以让JavaScript识别的ID:
<span id="showcompname"></span><span id="showcompid"><?php echo $_SESSION['company_id'];?></span>
然后在AJAX代码的“成功”回调中,编写
$("#showcompid").text(jsonObject.company_id);
这与您获得的其他JavaScript代码完全一样。更新“ showcompname”元素。
与此同时,下次运行运行更新整个页面的PHP代码(例如通过刷新页面)时,将使用存储在PHP会话中的值。