多个 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 调用,它就会立即取消设置会话变量公司信息,然后一旦找到所选公司的结果,它就会使用新值重置会话变量 company_id,但它不会更新会话变量

屏幕截图显示了我的意思 在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

阿戴森

Your code updates your session variable successfully. However, since you're making an AJAX call, only the code in the PHP script directly called by the AJAX ("complist.php" in this case) is executed on the server. None of the PHP code which originally used to create your page is run again - this is why you have to use JavaScript to populate the rest of your newly selected company details.

To update the ID on screen following the AJAX call, all you need to do is follow the pattern you've used to update the rest of the fields

Change your HTML so the element which contains the company ID has an ID which lets JavaScript identify it:

<span id="showcompname"></span><span id="showcompid"><?php echo $_SESSION['company_id'];?></span>

and then in the "success" callback of your AJAX code, write

$("#showcompid").text(jsonObject.company_id);

This is exactly the same concept as the other JavaScript code you've got e.g. to update the "showcompname" element.

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.NET第一次成功后进行第二次Ajax调用

来自分类Dev

第二次调用后,Ajax复制请求

来自分类Dev

Ajax.BeginForm第一次工作,但是从第二次调用开始两次调用方法

来自分类Dev

函数的第一次调用与第二次调用的性能

来自分类Dev

在Spring MVC中通过Ajax进行第二次更新请求后,JSON.stringify变空

来自分类Dev

jQuery DataTables Scroller Ajax没有被第二次调用

来自分类Dev

Ajax调用是在第二次提交表单时双重发布表单

来自分类Dev

jQuery ajax请求仅在第二次调用时返回值

来自分类Dev

ajax 调用后不会第二次触发 Document.ready

来自分类Dev

第一次尝试无法从WCF服务从Ajax函数调用获取数据

来自分类Dev

如何使FakeItEasy伪造对象的方法在第一次调用时抛出并在第二次调用时返回?

来自分类Dev

tkinter和python-方法的第一次调用可以,方法的第二次调用抱怨对象没有该属性

来自分类Dev

如何使FakeItEasy伪造对象的方法在第一次调用时抛出并在第二次调用时返回?

来自分类Dev

AJAX会话调用了两次。第二次没有显示警报

来自分类Dev

AJAX会话调用了两次。第二次没有显示警报

来自分类Dev

通过textField.inputView的DatePicker仅在第二次显示(第一次调用常规键盘)

来自分类Dev

仅当第一次失败时才执行第二次 http 调用

来自分类Dev

第二次我调用类方法时对象无法调用

来自分类Dev

使用jquery序列化上传多个文件仅在第二次调用时有效

来自分类Dev

使用 DataTable 服务器端脚本在第二次单击按钮时无法调用 ajax

来自分类Dev

当使用ajax更新数据时,vuejs第二次不渲染数据

来自分类Dev

React Ref对象在第二次调用后会自行重置

来自分类Dev

为什么在第二次调用“删除此”指针之后运行对象的方法

来自分类Dev

在Jupyter Notebook中第二次运行后无法调用'numpy.ndarray'对象

来自分类Dev

更新后只能在第二次迭代中提取/调用React Native状态

来自分类Dev

pyplot图仅在第二次调用ginput()之后更新

来自分类Dev

第二次调用任务产生副作用

来自分类Dev

如何使Jest spOn函数第二次调用

来自分类Dev

Swig模板在第二次调用时挂起

Related 相关文章

  1. 1

    .NET第一次成功后进行第二次Ajax调用

  2. 2

    第二次调用后,Ajax复制请求

  3. 3

    Ajax.BeginForm第一次工作,但是从第二次调用开始两次调用方法

  4. 4

    函数的第一次调用与第二次调用的性能

  5. 5

    在Spring MVC中通过Ajax进行第二次更新请求后,JSON.stringify变空

  6. 6

    jQuery DataTables Scroller Ajax没有被第二次调用

  7. 7

    Ajax调用是在第二次提交表单时双重发布表单

  8. 8

    jQuery ajax请求仅在第二次调用时返回值

  9. 9

    ajax 调用后不会第二次触发 Document.ready

  10. 10

    第一次尝试无法从WCF服务从Ajax函数调用获取数据

  11. 11

    如何使FakeItEasy伪造对象的方法在第一次调用时抛出并在第二次调用时返回?

  12. 12

    tkinter和python-方法的第一次调用可以,方法的第二次调用抱怨对象没有该属性

  13. 13

    如何使FakeItEasy伪造对象的方法在第一次调用时抛出并在第二次调用时返回?

  14. 14

    AJAX会话调用了两次。第二次没有显示警报

  15. 15

    AJAX会话调用了两次。第二次没有显示警报

  16. 16

    通过textField.inputView的DatePicker仅在第二次显示(第一次调用常规键盘)

  17. 17

    仅当第一次失败时才执行第二次 http 调用

  18. 18

    第二次我调用类方法时对象无法调用

  19. 19

    使用jquery序列化上传多个文件仅在第二次调用时有效

  20. 20

    使用 DataTable 服务器端脚本在第二次单击按钮时无法调用 ajax

  21. 21

    当使用ajax更新数据时,vuejs第二次不渲染数据

  22. 22

    React Ref对象在第二次调用后会自行重置

  23. 23

    为什么在第二次调用“删除此”指针之后运行对象的方法

  24. 24

    在Jupyter Notebook中第二次运行后无法调用'numpy.ndarray'对象

  25. 25

    更新后只能在第二次迭代中提取/调用React Native状态

  26. 26

    pyplot图仅在第二次调用ginput()之后更新

  27. 27

    第二次调用任务产生副作用

  28. 28

    如何使Jest spOn函数第二次调用

  29. 29

    Swig模板在第二次调用时挂起

热门标签

归档