我试图将我的 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/