javascript - 将变量放入 ajax 函数 JQuery

标签 javascript jquery variables scope

我有一个由单击触发的 AJAX 函数,该函数基本上将一个表行复制到另一个表中。

我遇到的问题是,我在 AJAX 请求之前从原始表行中获取了所需的变量,但是这些变量似乎没有传递给成功函数,并且它们显示为 undefined.

有没有办法将变量传递给函数?

$('.addfile_popup').on('click', '.add2_fl', function(){
    var file_id1=$(this).data('file');
    var id=$('.useri').val();
    var file_name1=$(this).closest('tr').children('td:first').text();
    var upload_date1=$(this).closest('tr').children('td').eq(1).text();
    var upload_desc=$(this).closest('tr').children('td').eq(2).text();
    var job_idx=$(this).data('jid');
    //write to appointment database
    var data="job_id="+job_idx+"&file_id="+file_id1+"&user_id="+id;
    $.ajax({
        type:"POST",
        url:"admin_includes/prepend_files.php",
        data:data,
        success:function(html){
            var ups='';
            ups+='<tr data-file='+file_id1+'><td width="40%">'+file_name1+'</td><td>'+upload_date1+'</td><td>'+upload_desc+'</td><td><a href="sym.php?doc_id='+file_id1+'" class="view2_fl">VIEW FILE</a> | <a href="javascript:void(0);" class="del2_fl">DELETE</a></td></tr>';
            $(ups).prependTo('.app_table');
        }
    });
});

最佳答案

$('.addfile_popup').on('click', '.add2_fl', function(){
    var file_id1=$(this).data('file');
    var id=$('.useri').val();
    var file_name1=$(this).closest('tr').children('td:first').text();
    var upload_date1=$(this).closest('tr').children('td').eq(1).text();
    var upload_desc=$(this).closest('tr').children('td').eq(2).text();
    var job_idx=$(this).data('jid');
    //write to appointment database
    var data="job_id="+job_idx+"&file_id="+file_id1+"&user_id="+id;

    // closure function that wrap your variables
    function success(file_id1, file_name1, upload_date1 ... ) {
         return function(html) {  
            var ups='';
            ups+='<tr data-file='+file_id1+'><td width="40%">'+file_name1+'</td><td>'+upload_date1+'</td><td>'+upload_desc+'</td><td><a href="sym.php?doc_id='+file_id1+'" class="view2_fl">VIEW FILE</a> | <a href="javascript:void(0);" class="del2_fl">DELETE</a></td></tr>';
            $(ups).prependTo('.app_table');
    }

    $.ajax({
        type:"POST",
        url:"admin_includes/prepend_files.php",
        data:data,
        success: success(file_id1, file_name1, upload_date1 ...)
    });
});

关于javascript - 将变量放入 ajax 函数 JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12301369/

相关文章:

javascript - 单选按钮复选框

sql - 带有 case 语句的 Transact-SQL 局部变量

javascript - 在 Firefox 24 及更多版本中使用 javascript 关闭浏览器而不显示确认框

javascript - jQuery 突出显示不适用于 Bootstrap v4 按钮

javascript - 在 Mouseover 上为嵌套的 div 执行一个函数

c++ - 某些变量初始化中的 "l"是什么意思 - C++

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

javascript - `@babel/preset-env` + `useBuiltIns` + `@babel/runtime` + `browserslistrc` 的最佳做法是什么

javascript - 如何在 UI 上动态显示图像?

javascript - 或者 JavaScript 中的声明?