为从AJAX调用中utlizes DATA参数的函数定义回调

Define a callback for a function that utlizies DATA parameter from AJAX call

本文关键字:函数 定义 回调 参数 DATA AJAX 调用 utlizes 为从      更新时间:2024-06-19

我正试图将<textarea>中的HTML保存为电子邮件模板。这可以在多个地方完成,所以我想创建一个save_email_template()函数,它可以接收参数并根据需要保存(我已经成功地完成了)。

我还想在每次调用save_email_template()函数时指定一个回调。catch在回调中,我想用各种方式处理从save_email_template()函数内部的ajax调用返回的data

这是我的代码:

function save_email_template(options,callback){
   $.ajax({
      type: "POST",
      url: '/save_email_template.php',
      data: options.params,
      success:function(data) {
        if (typeof callback === 'function') {
            callback(data);
        }
      }
   });
 }

   save_email_template({
      params: {
        'action':'add',
        'eid':$('input#id').val(),
        'title':$('input#name').val(),
        'html':$('textarea#html').val()
      }
    }, function(data){ // <----  "Data" Not Defined 
        if (typeof data.html_issues !== 'undefined') {
            console.log('HTML Issues:'n------------------');
            console.error(data.html_issues);
        }
        if (typeof data.css_issues !== 'undefined') {
            console.log('CSS Issues:'n------------------');
            console.error(data.css_issues);
        }
        if (data.status == "OK") {
             $('body').append(data.html);
        } else {
            if (typeof data.error_msg !== 'undefined')
              alert(data.error_msg);
            if (data.status == "ERROR")
              console.error(data);
        }
    });

问题:

我一直在获取JS错误"data"not defined"及其引用我的回调。。。该代码CCD_ 6。显然,data还没有定义,但我如何引用AJAX调用中返回的data

不要将回调传递到save_email_template()函数中。相反,从函数返回ajax调用,并在返回的jqXHR上编写.done().then()处理程序。这允许您在代码的同一区域中调用函数并定义回调逻辑。
function save_email_template(options){
    return $.ajax({
      type: "POST",
      url: '/save_email_template.php',
      data: options.params
    });
}
save_email_template(options).then(function(data) {
    //write your callback logic here
});