javascript - ajax调用函数的嵌套

标签 javascript php ajax codeigniter

Ajax 函数(带嵌套)

function open_appointment(id)
{
save_method = 'open_appointment';
$('#form_open_appointment')[0].reset(); // reset form on modals
$('.form-group').removeClass('has-error'); // clear error class
$('.help-block').empty(); // clear error string

//Ajax Load data from ajax
$.ajax({
    url : "<?php echo site_url('ReceptionistController/ajax_edit_appointment')?>/" + id,
    type: "GET",
    dataType: "JSON",
    success: function(data)
    {

        $.ajax({
            url : "<?php echo site_url('DoctorController/ajax_edit_patient')?>/" +data.ap_patient, 
            type: "GET",
            dataType: "JSON",
            success: function(data)
            {
                $('[name="pt_name"]').val(data.pt_name);

            },
            error: function (jqXHR, textStatus, errorThrown)
            {
                alert('Failed');
            }
        });

        $('#modal_open_appointment').modal('show'); // show bootstrap modal when complete loaded
        $('.modal-title').text('Open Appointment'); // Set title to Bootstrap modal title

    },
    error: function (jqXHR, textStatus, errorThrown)
    {
        alert('Error get data from ajax');
    }
});
 }

我想将一个 ajax 调用用于另一个 .我写了上面的代码但它不起作用(当嵌套时),并显示“失败”。 ajax调用函数嵌套有问题

最佳答案

你可以像下面这样使用 promise

代码未经测试...

供引用: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise

var getAppointment = function() {

    return new Promise(function(resolve, reject) {

        $.ajax({
            url : "<?php echo site_url('ReceptionistController/ajax_edit_appointment')?>/" + id,
            type: "GET",
            dataType: "JSON",
            success: function(data)
            {
                resolve(data);
            },
            error: function (jqXHR, textStatus, errorThrown)
            {
                reject('Error get data from ajax');
            }
        });

    })
}

var editPatient = function(data) {
    return new Promise(function(resolve, reject) {

        $.ajax({
            url : "<?php echo site_url('DoctorController/ajax_edit_patient')?>/" +data.ap_patient, 
            type: "GET",
            dataType: "JSON",
            success: function(data)
            {
                resolve(data);

            },
            error: function (jqXHR, textStatus, errorThrown)
            {
                reject('Failed');
            }
        });
    }
}

getAppointment()
    .then(function(data) {
        return editPatient(data)
    })
    .then(function(data) {
        $('[name="pt_name"]').val(data.pt_name);
    })
    .catch(function(error) {
        console.log(error)
    ));

关于javascript - ajax调用函数的嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40630106/

相关文章:

javascript - 在 Angular Js 中切换多个选项

javascript - 如何延长浏览器脚本超时

php - Memcached - 如何处理添加/部署服务器

javascript - 与 Thymeleaf 一起使用时切换按钮出现问题

javascript - 在mapDispatchToProps中react-router访问history prop

php - 当我对我的 php 文件的引用仍在运行时,无法找到 style.css

javascript - 为什么你可以在 JS 而不是 PHP 中推送到数组引用

javascript - 数据库结果延迟 25 分钟

javascript - 如何在laravel中使用jquery ajax保存多个表单数据?

jquery - 停止 Ajax 如果 ? (自动完成多个值)