Php 多个AJAX调用—第一个用于获取数据并转换为JSON对象,第二个用于更新$\u会话信息

Php 多个AJAX调用—第一个用于获取数据并转换为JSON对象,第二个用于更新$\u会话信息,php,jquery,ajax,Php,Jquery,Ajax,我有一个ajax调用,它从表中提取数据,然后转换成JSON对象 因为我在PHP方面也做了很多工作,所以我需要进行第二次AJAX调用 在第一次更新$\u会话信息之后 我试过把 $_SESSION['company_id'] = $_POST['companyid']; 在处理第一个AJAX调用的同一个文件中,但它不处理第一个调用的数据,因此我需要执行第二个调用 下面是我的jQuery代码,用于第一个和第二个AJAX查询 $(".showcompinfo").click(function(){

我有一个ajax调用,它从表中提取数据,然后转换成JSON对象

因为我在PHP方面也做了很多工作,所以我需要进行第二次AJAX调用 在第一次更新$\u会话信息之后 我试过把

$_SESSION['company_id'] = $_POST['companyid'];
在处理第一个AJAX调用的同一个文件中,但它不处理第一个调用的数据,因此我需要执行第二个调用

下面是我的jQuery代码,用于第一个和第二个AJAX查询

$(".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);
如果有人能帮我把它整合成一个ajax查询或者帮我打两个电话 如果工作正常,将不胜感激

**编辑**
好的,我现在让它在会话变量中显示公司ID,但是当用户单击查看不同的公司信息结果时,会话公司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调用,它会立即取消会话变量company info的设置 然后,一旦找到所选公司的结果,它将使用新值重置会话var company_id,但不会更新会话变量

显示我的意思的截图


您的代码成功地更新了会话变量。但是,由于您正在进行AJAX调用,因此在本例中,只有AJAX complist.PHP直接调用的PHP脚本中的代码在服务器上执行。最初用于创建页面的PHP代码都不会再次运行——这就是为什么您必须使用JavaScript来填充新选择的其他公司详细信息

要在AJAX调用后更新屏幕上的ID,只需遵循用于更新其余字段的模式即可

更改HTML,使包含公司ID的元素具有一个ID,该ID允许JavaScript识别:

<span id="showcompname"></span><span id="showcompid"><?php echo $_SESSION['company_id'];?></span>
这与其他JavaScript代码的概念完全相同,例如更新showcompname元素


同时,存储在PHP会话中的值将在下次运行更新整个页面的PHP代码时使用,例如通过刷新页面。

作为一个与您的问题没有直接关系的要点,您的代码容易受到SQL注入攻击。您应该使用参数化查询和准备好的语句来帮助防止攻击者使用恶意输入值破坏您的数据库。给出了风险的解释,以及如何使用PHP/mysqli安全地编写查询的一些示例。切勿将未初始化的数据直接插入SQL。当用户单击以查看其他公司信息结果时,会话公司id不会更新…如果用户选择了有效的公司,则不太可能出现这种情况。你怎么知道的?你是怎么测试的?。不清楚。只要输入了if$result块,就应该在会话中更新该值。你需要追溯你的代码,看看哪里开始出错。验证ajax请求是否发送了所有正确的数据、查询是否正确返回、是否输入了if块等。您应该使用echo$newdata而不是print_r$newdata-print_r是一种调试工具,有时可能会打印不属于变量的额外字符,这将导致您的输出是无效的JSON。好的,我要指出的是,打印回脚本的JSON是正确的,可以正常工作。我现在的问题是会话var company info没有更新,我还尝试在if之前设置会话变量!空语句基于POST值,它会更新,但如果它在显示新公司数据时未反映更改,则会尝试附加一个屏幕截图来显示此信息谢谢。。这真让我发疯。。我对jquery非常陌生,虽然我喜欢尝试学习新的语言,但我真的开始希望我没有像现在这样工作。。。非常感谢:@ChrisYates没问题。我认为这只是一个概念性的问题,您需要了解ajax请求实际在做什么和没有做什么。在我看来,更多的是使用ajax,而不是使用jQuery。我很高兴它真的做到了我想要的,再次感谢
$("#showcompid").text(jsonObject.company_id);