Php jquery appendTo函数在ajax成功函数中不起作用

Php jquery appendTo函数在ajax成功函数中不起作用,php,jquery,json,ajax,append,Php,Jquery,Json,Ajax,Append,我正在尝试使用jQueryAjax方法获取一些数据。这是我的密码: $('body').on('click','.showSlots', function() { var screen_Id = $(this).attr('id'); //alert(screen_Id); $.ajax({ url:base_url+'admin/movies/getScreenSlots', type:'post', data: {screen_Id:screen_Id},

我正在尝试使用jQueryAjax方法获取一些数据。这是我的密码:

$('body').on('click','.showSlots', function() {
var screen_Id = $(this).attr('id');
//alert(screen_Id);

$.ajax({
    url:base_url+'admin/movies/getScreenSlots',
    type:'post',
    data: {screen_Id:screen_Id},
    success: function(result)
    {   

      result = $.parseJSON(result);
      //$('.screenList1,.screenList12').empty();   
      $.each(result, function( key, element )
      {

                    $('<tr class="screenList1"><td><input required name="slotName" type="text" placeholder="enter slot"><input name="screen_id1" required type="hidden" value="'+element.screen_id+'" class="screen_ids1"></td><td><input required name="movieName" type="text" placeholder="Movie Name"></td><td><input required name="rate" type="text" placeholder="rate"></td></tr>').appendTo($(this).closest('table'));
        });

      }
   });
});
$('body')。在('click','showSlots',函数()上{
var screen_Id=$(this.attr('Id');
//警报(屏幕标识);
$.ajax({
url:base_url+'admin/movies/getScreenSlots',
类型:'post',
数据:{screen\u Id:screen\u Id},
成功:功能(结果)
{   
结果=$.parseJSON(结果);
//$('.screenList1.screenList12').empty();
$。每个(结果、功能(键、元素)
{
$('').appendTo($(this.closest('table');
});
}
});
});

已成功从数据库获取数据。jquery“each”函数运行良好。但“appendTo”功能不起作用。在许多浏览器中尝试过。但所有的问题都是一样的。请帮忙。谢谢。

您的实现存在的问题是当前元素上下文
不涉及成功处理程序中单击的
showSlots

将表的引用存储在变量中,并在附加html时使用它

$('body').on('click', '.showSlots', function() {
    var table= $(this).closest('table'); //Store the reference
    $.ajax({
        success: function(result) {                
            $.each(result, function(key, element) { 
                $('<tr ></tr>').appendTo(table); //Use it
            });
        }
    });
});
$('body')。在('click','showSlots',函数()上{
var table=$(this).closest('table');//存储引用
$.ajax({
成功:函数(结果){
$.each(结果、函数(键、元素){
$('').appendTo(表);//使用它
});
}
});
});

您的实现存在的问题是当前元素上下文
不涉及成功处理程序中单击的
showSlots

将表的引用存储在变量中,并在附加html时使用它

$('body').on('click', '.showSlots', function() {
    var table= $(this).closest('table'); //Store the reference
    $.ajax({
        success: function(result) {                
            $.each(result, function(key, element) { 
                $('<tr ></tr>').appendTo(table); //Use it
            });
        }
    });
});
$('body')。在('click','showSlots',函数()上{
var table=$(this).closest('table');//存储引用
$.ajax({
成功:函数(结果){
$.each(结果、函数(键、元素){
$('').appendTo(表);//使用它
});
}
});
});
更改此行:

appendTo($(this).closest('table'));

to 

appendTo($('.showSlots').closest('table'));
因为$(this)在ajax调用的另一个函数中不引用“.showSlots”。

更改此行:

appendTo($(this).closest('table'));

to 

appendTo($('.showSlots').closest('table'));

由于$(this)在ajax调用的另一个函数中不引用“.showSlots”。

您应该这样编写代码,将当前元素保存在名为“obj”的变量中,然后使用该变量添加新创建的行

$('body').on('click','.showSlots', function() {
var screen_Id = $(this).attr('id');
var obj=$(this);
$.ajax({
    url:base_url+'admin/movies/getScreenSlots',
    type:'post',
    data: {screen_Id:screen_Id},
    success: function(result)
    {   
         result = $.parseJSON(result); 
         $.each(result, function( key, element )
         {
              $('<tr class="screenList1"><td><input required name="slotName" type="text" placeholder="enter slot"><input name="screen_id1" required type="hidden" value="'+element.screen_id+'" class="screen_ids1"></td><td><input required name="movieName" type="text" placeholder="Movie Name"></td><td><input required name="rate" type="text" placeholder="rate"></td></tr>').appendTo($(obj).closest('table'));
    });

  }
$('body')。在('click','showSlots',函数()上{
var screen_Id=$(this.attr('Id');
var obj=$(本);
$.ajax({
url:base_url+'admin/movies/getScreenSlots',
类型:'post',
数据:{screen\u Id:screen\u Id},
成功:功能(结果)
{   
结果=$.parseJSON(结果);
$。每个(结果、功能(键、元素)
{
$('').appendTo($(obj).closest('table');
});
}
}));
});

您应该这样编写代码,将当前元素保存在一个名为“obj”的变量中,然后使用该变量添加新创建的行

$('body').on('click','.showSlots', function() {
var screen_Id = $(this).attr('id');
var obj=$(this);
$.ajax({
    url:base_url+'admin/movies/getScreenSlots',
    type:'post',
    data: {screen_Id:screen_Id},
    success: function(result)
    {   
         result = $.parseJSON(result); 
         $.each(result, function( key, element )
         {
              $('<tr class="screenList1"><td><input required name="slotName" type="text" placeholder="enter slot"><input name="screen_id1" required type="hidden" value="'+element.screen_id+'" class="screen_ids1"></td><td><input required name="movieName" type="text" placeholder="Movie Name"></td><td><input required name="rate" type="text" placeholder="rate"></td></tr>').appendTo($(obj).closest('table'));
    });

  }
$('body')。在('click','showSlots',函数()上{
var screen_Id=$(this.attr('Id');
var obj=$(本);
$.ajax({
url:base_url+'admin/movies/getScreenSlots',
类型:'post',
数据:{screen\u Id:screen\u Id},
成功:功能(结果)
{   
结果=$.parseJSON(结果);
$。每个(结果、功能(键、元素)
{
$('').appendTo($(obj).closest('table');
});
}
}));
});

与您认为它的功能无关

您应该在ajax调用之外找到table元素,并保存到一个变量:

$('body').on('click','.showSlots', function() {

    var screen_Id = $(this).attr('id');
    var table = $(this).closest('table');

    $.ajax({
        url:base_url+'admin/movies/getScreenSlots',
        type:'post',
        data: {screen_Id:screen_Id},
        success: function(result){   

          result = $.parseJSON(result); 
          $.each(result, function( key, element ){
              $('...your html...').appendTo(table);
           });

        }
    });

});

与您认为的功能无关

您应该在ajax调用之外找到table元素,并保存到一个变量:

$('body').on('click','.showSlots', function() {

    var screen_Id = $(this).attr('id');
    var table = $(this).closest('table');

    $.ajax({
        url:base_url+'admin/movies/getScreenSlots',
        type:'post',
        data: {screen_Id:screen_Id},
        success: function(result){   

          result = $.parseJSON(result); 
          $.each(result, function( key, element ){
              $('...your html...').appendTo(table);
           });

        }
    });

});

您必须在某个变量中引用对象,然后在每个循环中使用它。你可以像这样做:-

$('body').on('click','.showSlots', function() {
var screen_Id = $(this).attr('id');
$this = $(this);
//alert(screen_Id);

$.ajax({
    url:base_url+'admin/movies/getScreenSlots',
    type:'post',
    data: {screen_Id:screen_Id},
    success: function(result)
    {   

      result = $.parseJSON(result);
      //$('.screenList1,.screenList12').empty();   
      $.each(result, function( key, element )
      {

                    $('<tr class="screenList1"><td><input required name="slotName" type="text" placeholder="enter slot"><input name="screen_id1" required type="hidden" value="'+element.screen_id+'" class="screen_ids1"></td><td><input required name="movieName" type="text" placeholder="Movie Name"></td><td><input required name="rate" type="text" placeholder="rate"></td></tr>').appendTo($this.closest('table'));
        });
      }
   });
});
$('body')。在('click','showSlots',函数()上{
var screen_Id=$(this.attr('Id');
$this=$(this);
//警报(屏幕标识);
$.ajax({
url:base_url+'admin/movies/getScreenSlots',
类型:'post',
数据:{screen\u Id:screen\u Id},
成功:功能(结果)
{   
结果=$.parseJSON(结果);
//$('.screenList1.screenList12').empty();
$。每个(结果、功能(键、元素)
{
$('').appendTo($this.closest('table');
});
}
});
});

这可能会有帮助。

您必须在某个变量中引用object,然后在每个循环中使用它。你可以像这样做:-

$('body').on('click','.showSlots', function() {
var screen_Id = $(this).attr('id');
$this = $(this);
//alert(screen_Id);

$.ajax({
    url:base_url+'admin/movies/getScreenSlots',
    type:'post',
    data: {screen_Id:screen_Id},
    success: function(result)
    {   

      result = $.parseJSON(result);
      //$('.screenList1,.screenList12').empty();   
      $.each(result, function( key, element )
      {

                    $('<tr class="screenList1"><td><input required name="slotName" type="text" placeholder="enter slot"><input name="screen_id1" required type="hidden" value="'+element.screen_id+'" class="screen_ids1"></td><td><input required name="movieName" type="text" placeholder="Movie Name"></td><td><input required name="rate" type="text" placeholder="rate"></td></tr>').appendTo($this.closest('table'));
        });
      }
   });
});
$('body')。在('click','showSlots',函数()上{
var screen_Id=$(this.attr('Id');
$this=$(this);
//警报(屏幕标识);
$.ajax({
url:base_url+'admin/movies/getScreenSlots',
类型:'post',
数据:{screen\u Id:screen\u Id},
成功:功能(结果)
{   
结果=$.parseJSON(结果);
//$('.screenList1.screenList12').empty();
$。每个(结果、功能(键、元素)
{
$('').appendTo($this.closest('table');
});
}
});
});

这可能会有帮助。

当您在中引用“this”时,是否也可以显示您的html?每个函数都引用了您正在循环的数组中的当前项。您好@Sean Wessell,这是一个问题!!。问题现在已经解决,非常感谢Sean Wessell..您也可以显示您的html吗?当您在中引用“this”时。它引用的每个函数都引用了您正在循环的数组中的当前项。您好@Sean Wessell,这就是问题所在!!。问题现在已经解决,非常感谢Sean Wessell..请记住添加有关您已更改/应更改内容的注释。请记住添加有关您已更改/应更改内容的注释。我已存储$的引用(此)在变量中,然后在每个循环的AJAX成功部分使用它。你能试试这个吗?@user3706231我想你刚刚忘记了那个小错误。我已经将$(this)的引用存储在变量中,然后在成功部分使用它