javascript - 将 ajax 调用推广到函数中

标签 javascript jquery ajax

我试图将我的 ajax 调用概括为一个函数,如下所示。我以前没有这样做过,并且不确定我是否做得正确。

<script>
    $(document).ready(function(){
    var reg_no=$("#reg_no").val();
    reg_no=reg_no.trim();
    if(reg_no!==""){
        //populate fields
        data={reg_no:reg_no,func:"getSupplierDetails"};
        success_function="updateFormFields";
        ajax_call(data,success_function);  
     }
});

function ajax_call(data,success_function){
    $.ajax({
        type:"POST",
        url:"../control/supplier-c.php",
        dataType:"json",
        data:data,
        success:function(data){
            success_function(data);  //variable function works??
        }

    });
}

function updateFormFields(data){
    //some code here to handle data array   
}
</script>

我在这里试图做的是通过传递数据数组和成功时要执行的函数来避免重写整个ajax代码。我不确定是否像我一样使用变量函数。

需要注意的是,如果 updateFormFields() 代码被移动到 ajax 调用中的成功处理程序中,并且 ajax_call() 没有定义为单独的函数,而是在 ajax 调用之后立即实现,则整个事情适用于 ajax 调用。注释“填充字段”。我只是没有尝试这种方式的经验,我需要知道这是否可能。

谢谢

最佳答案

在 Javascript 中,函数是第一类对象,这意味着您可以将它们作为参数传递。

function json_post(url, data, success_function, error_function) {
    $.ajax({
        type:"POST",
        url:url,
        dataType:"json",
        data:data
    }).then(success_function, error_function);
}

然后你可以将其称为

json_post("../control/supplier-c.php", { data: "data" }, function (res) {
    console.log('Ajax req successful');
    console.log(res);
}, function (res) {
    console.log('Error in ajax req');
    console.log(res);
});

根据您的情况,您可以这样做:

ajax_call(data, updateFormFields);

它应该按预期工作。

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

相关文章:

jquery - 仅当有 header 时,CORS 请求才会在 Chrome 中失败

html - jQuery 子元素不合作

c# - 将数据从 C# 返回到 jQuery UI 自动完成

javascript - 在javascript中从对象数组中提取两个数组的最快方法

javascript - 如何防止 IE 10 在使用快捷方式时触发打印?

javascript - 从文档顺序中获取第一个 Firestore 文档 (Node.js)

javascript - 转义码输入的 Keyup 问题

Android:触发 AJAX 功能不起作用

javascript - 如何在脚本文件中使用 Laravel Blade?

javascript - 为什么这个 AJAX 表单没有提交?