jQuery undefined Data

时间:2016-01-13 20:19:45

标签: jquery ajax

所以,我有以下js:

function RHP_AJAX(a, b, c)
{
jQuery.ajax({
    type : 'POST',
    url  : custom.ajax_url, 
    data : { 'action': a , id: b},
    success : function(data){
        c;          
        return false;
    }                   
}); 
}

然后另一个var:

jQuery(document).on( 'click', '.show', function(e) {
   var c = jQuery('.extra').html(data);
   RHP_AJAX('ajax', id, c);
});

问题是.html(data);,因为data尚未定义。我知道这个问题,但我不确定如何描述它(我相信当你看到代码时你们会理解的。)

如何解决此问题?

5 个答案:

答案 0 :(得分:2)

您正在寻找一个函数参数:

function RHP_AJAX(a, b, c){
  jQuery.ajax({
    type : 'POST',
    url  : custom.ajax_url, 
    data : { 'action': a , id: b},
    success : c                   
  }); 
}

你可以像这样使用它:

jQuery(document).on( 'click', '.show', function(e) {
   RHP_AJAX('ajax', id, function(data){
       jQuery('.extra').html(data);
   });
});

答案 1 :(得分:2)

在这里做的正确的事情就是从$.ajax

传回延期
function RHP_AJAX(a, b) {
    return jQuery.ajax({
        type : 'POST',
        url  : custom.ajax_url, 
        data : { 'action': a , id: b}
    });
}); 

jQuery(document).on( 'click', '.show', function(e) {
    RHP_AJAX('ajax', id).then(function(data) {
       jQuery('.extra').html(data);
    });
});

答案 2 :(得分:1)

我假设当您单击.show元素时,您想要查询服务器,然后将该响应注入.extra元素。如果是这样,这是我的解决方案:

jQuery(document).on( 'click', '.show', function(e) {
    jQuery.ajax({
        type: "POST",
        url: custom.ajax_url,
        data: { "action": a, id: b },
        success: function (data) {
            jQuery(".extra").html(data);
        }
    });
});

这只是异步编程的一个问题。请在此处阅读:https://www.google.com/#safe=active&q=javascript%2Basynchronous%2Bprogramming

答案 3 :(得分:1)

尝试将该函数作为回调函数传递:

function RHP_AJAX(a, b, callback)
{
    jQuery.ajax({
         type : 'POST',
         url  : custom.ajax_url, 
         data : { 'action': a , id: b},
         success : function(data){
             callback(data);          
            return false;
        }                   
    }); 
}


jQuery(document).on( 'click', '.show', function(e) {
   var callFunction = function(data) { jQuery('.extra').html(data);}
   RHP_AJAX('ajax', id, callFunction);
});

答案 4 :(得分:1)

在我看来,您的代码应该像这样进行重组:

jQuery(document).on('click', '.show', function() {
   RHP_AJAX('ajax', id);
});

function RHP_AJAX(a, b)
{
   jQuery.ajax({
      type : 'POST',
      url  : custom.ajax_url, 
      data : { 'action': a , id: b },
      success : function(data){
         jQuery('.extra').html(data);
      }                   
   }); 
}